我在 numpy 中有两个数组。第一个是二维数组,可以将其视为向量列表。第二个是一维数组,可以将其视为二维数组的索引列表。
我想使用一维数组的索引选择二维数组的元素。现在我一直在做
z=rnd.rand(2,10) # a list of 2d vectors of length 10
z_idx=rnd.randint(2,size=z.shape[1]) #indices selecting a dimension of the 2d vector
result=np.array([z[z_idx[i],i] for i in xrange(len(z_idx))])
但这很慢。
在 numpy 中有更好的方法吗?
最佳答案
可能是最简单的方法:
result = z[z_idx].diagonal()
也许使用 arange
会更有效率:
result = z[z_idx, np.arange(z_idx.size)]
更合适但等效的是np.indices
:
result = z[z_idx, np.indices(z_idx.shape)[0]]
关于python - 使用numpy中的一维数组从二维数组中选择多个元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12216191/