【发布时间】:2012-02-17 08:52:08
【问题描述】:
我想从 numpy.array 的元素中获取一些索引。这是我到目前为止所得到的:
import numpy as np
a = np.array(range(20))
a.shape=4,5
#~ [[ 0 1 2 3 4]
#~ [ 5 6 7 8 9]
#~ [10 11 12 13 14]
#~ [15 16 17 18 19]]
idxs = np.array([(4,0),(3,1),(2,1),(0,3)])
ret = a.take(idxs,1).diagonal().transpose()
print ret
#~ [[ 4. 0.]
#~ [ 8. 6.]
#~ [ 12. 11.]
#~ [ 15. 18.]]
是否有可能以更简单(或更快)的方式获得此结果?
【问题讨论】:
-
您的
idxs仅适用于转置的a。没有a[4,0]。 -
我没有很好地解释自己,对不起。您看到的 (4,0) 表示从第一行获取元素 4 和元素 0。然后从第二行取元素3和1等。我显示的结果是正确的,我对方法不满意。
-
也只是作为一般说明,要创建
a,您应该使用类似a=np.arange(20).reshape((4,5))的东西