【发布时间】:2019-08-25 16:42:25
【问题描述】:
我有一种手动方式来引用 numpy 数组,但不知道如何以类似 numpy 的方式进行操作。
我正在寻找类似于以下行的类似 numpy 的内容:
np.array([arr[0,index[0]], arr[1,index[1]], arr[2,index[2]]]).reshape(3,1)
这里是代码(简化以查明问题):
arr = np.arange(9).reshape(3,3)
index = np.array([2,0,1])
print(arr)
result = np.array([arr[0,index[0]], arr[1,index[1]], arr[2,index[2]]]).reshape(3,1)
print(result)
它产生以下内容:
[[0 1 2]
[3 4 5]
[6 7 8]]
[[2]
[3]
[7]]
我正在寻找numpy风格的代码来实现什么行
np.array([arr[0,index[0]], arr[1,index[1]], arr[2,index[2]]]).reshape(3,1)
在这里做,例如:
arr[:,index[:]]
显然,这不能正常工作,因为 index[:] 表示整行而不是只选择一个对应的值。
这一定很简单,我只是莫名其妙地坚持了下来。如果没有手动为每一行带来每个索引的长线,无法弄清楚如何做到这一点。就我而言,我有数千行和数千列,所以绝对不能使用手动方式。
【问题讨论】:
-
@Divakar 我浏览了引用的帖子,并想出了我的问题的答案: arr[[0,1,2],index] 完全符合我的需要。但我仍然无法理解它是如何工作的,为什么它会这样做。我是 numpy 的新手,非常感谢一些帮助。更具体地说,numpy 究竟如何处理 2 条看起来非常相似的完全不同的指令:1) arr[0:3,index] 和 2) arr[[0,1,2],index]
标签: numpy numpy-ndarray