python – 当ndims事先不知道时处理多维数组

我正在处理来自netcdf文件的数据,具有多维变量,读入numpy数组.我需要扫描所有维度中的所有值(numpy中的轴)并更改一些值.但是,我事先并不知道任何给定变量的维度.在运行时,我当然可以获得numpy数组的ndims和形状.

如何在不知道尺寸或形状数量的情况下通过所有值编程循环?如果我知道变量恰好是2维,我会这样做

shp=myarray.shape
for i in range(shp[0]):
  for j in range(shp[1]):
    do_something(myarray[i][j])

最佳答案 你应该看看ravel,nditer和ndindex.

# For the simple case
for value in np.nditer(a):
    do_something_with(value)

# This is similar to above
for value in a.ravel():
    do_somting_with(value)

# Or if you need the index
for idx in np.ndindex(a.shape):
    a[idx] = do_something_with(a[idx])

在一个不相关的注释中,numpy数组被索引为a [i,j]而不是[i] [j].在python中,[i,j]相当于用元组索引,即[(i,j)].

点赞