加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

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

发布时间:2020-12-20 11:31:03 所属栏目:Python 来源:网络整理
导读:我正在处理来自netcdf文件的数据,具有多维变量,读入numpy数组.我需要扫描所有维度中的所有值(numpy中的轴)并更改一些值.但是,我事先并不知道任何给定变量的维度.在运行时,我当然可以获得numpy数组的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)].

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读