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

python – 作为多维数组索引的元组

发布时间:2020-12-16 23:04:04 所属栏目:Python 来源:网络整理
导读:我找到了一个与我非常相似的问题,但不完全相同. 这一个: here 然而,在ntimes的情况下,数组的大小与元组指向的维度的数量相匹配. 在我的情况下,我有一个4维数组和一个二维元组,就像这样: from numpy.random import randbig_array=rand(3,3,4,5)tup=(2,2) 我
我找到了一个与我非常相似的问题,但不完全相同.
这一个: here
然而,在ntimes的情况下,数组的大小与元组指向的维度的数量相匹配.
在我的情况下,我有一个4维数组和一个二维元组,就像这样:
from numpy.random import rand
big_array=rand(3,3,4,5)
tup=(2,2)

我想使用元组作为前两个维度的索引,并手动索引最后两个维度.就像是:

big_array[tup,2]

但是,我沿着第四维获得了索引= 2的第一维的重复(因为它在技术上没有被索引).这是因为这个索引将双索引解释为第一维而不是每个维的一个值,

eg. 
| dim 0:(index 2 AND index 2),dim 1:(index 3),dim 2:(index 2),dim 3:(no index)|
instead of 
|dim 0(index 2),dim 1(index 2),dim 2:(index 3),dim 3:(index 2)|.

那我怎么能“打开”这个元组呢?有任何想法吗?
谢谢!

解决方法

您也可以单独传递您的第一个元组以获得感兴趣的切片,然后将其分别编入索引:
from numpy.random import rand
big_array=rand(3,5)
chosen_slice = (2,2)

>>> big_array[ chosen_slice ]
array([[ 0.96281602,0.38296561,0.59362615,0.74032818,0.88169483],[ 0.54893771,0.33640089,0.53352849,0.75534718,0.38815883],[ 0.85247424,0.9441886,0.74682007,0.87371017,0.68644639],[ 0.52858188,0.74717948,0.76120181,0.08314177,0.99557654]])

>>> chosen_part = (1,1)

>>> big_array[ chosen_slice ][ chosen_part ]
0.33640088565877657

对于某些用户而言,这可能稍微更具可读性,但除此之外,我倾向于mgilson的解决方案.

(编辑:李大同)

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

    推荐文章
      热点阅读