python - 在事先不知道 ndim 时处理多维数组

标签 python arrays numpy

我正在处理来自 netcdf 文件的数据,带有多维变量,读入 numpy 数组。我需要扫描所有维度的所有值(numpy 中的轴)并更改一些值。但是,我事先并不知道任何给定变量的维度。在运行时,我当然可以获取 numpy 数组的 ndim 和形状。 我如何在事先不知道维数或形状的情况下对所有值进行循环编程?如果我知道一个变量恰好是二维的,我会做

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

最佳答案

您应该查看 ravelnditerndindex

# 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_something_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] 而不是 a[i][j]。在python中a[i, j]相当于用一个元组进行索引,即a[(i, j)]

关于python - 在事先不知道 ndim 时处理多维数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19690429/

相关文章:

python - 如何创建随机范围,但排除特定数字?

python - 使用线程获取文件中每个单词的计数

c - ANSI C/C89 结构体到 int array[]

C# 将 ReadOnlyCollection<int> 转换为 byte[] 数组

python - 如何从 .las 文件中的 16 位值中过滤颜色?

python - 在python中打印表面拟合方程

python - 将 svg 保存到临时文件 Python

python : Multiple file processing is very slow

arrays - 如何在不限制其维度的情况下为函数参数指定类型?

python - Haversine 距离的最小值的有效计算