我需要能够返回多维数组的一部分,但我不知道如何以正确的方式执行此操作。我这样做的方式似乎很幼稚:
import numpy as np
a=np.ones([3,3,3,3,3])
b=np.asarray([2,2])
c=np.asarray([2,2])
print a[b[0],b[1],:,c[0],c[1]]
会回来
[1,1,1]
但是我想要的是这样的:
a=np.ones([3,3,3,3,3])
b=np.asarray([2,2])
c=np.asarray([2,2])
print a[b,:,c]
它返回 a
本身,尽管我希望它返回 [1,1,1]
。
我也不知道为什么。如何在不逐个元素指定的情况下读取数组的一部分,而是给出我想要的数组的索引作为一个包?
附言感谢@hcwhsa,我更新了问题以更具体地解决我想要的问题。
将 b
定义为一个元组:
>>> b = (2, 2)
>>> a[b]
array([ 1., 1., 1.])
或者在将其传递给a[]
之前将其转换为
元组
>>> b = np.asarray([2,2])
>>> a[tuple(b)]
array([ 1., 1., 1.])
我是一名优秀的程序员,十分优秀!