【发布时间】:2021-05-17 13:39:36
【问题描述】:
我正在尝试从二维数组 a 中提取元素,并且我正在使用一个二维索引数组 b ,表示 x/y 坐标。我发现一维数组有类似的东西,但我无法成功地将它应用到二维数组:Python - How to extract elements from an array based on an array of indices?
a = np.random.randn(10,7)
a = a.astype(int)
b = np.array([[1, 2], [2,3], [3,5], [2,7], [5,6]])
我一直在使用下面的代码,但是它返回一个 3D 矩阵,其中包含来自每个索引的行的值:
result2 = np.array(a)[b]
result2
Out[101]:
array([[[ 0, -1, 0, 0, 0, 1, 0],
[ 0, -1, 0, 0, 0, 0, 0]],
[[ 0, -1, 0, 0, 0, 0, 0],
[-1, 0, 0, 1, 0, 0, 0]],
[[-1, 0, 0, 1, 0, 0, 0],
[ 0, 0, -1, -2, 1, 0, 0]],
[[ 0, -1, 0, 0, 0, 0, 0],
[-1, 0, 0, 0, 0, 0, 1]],
[[ 0, 0, -1, -2, 1, 0, 0],
[ 1, 0, 0, 1, 0, -1, 0]]])
如何修改 b 以索引(第 1 列,第 2 行)...(第 2 列,第 3 行)...(第 3 列,第 5 行)...等?
...
这是一个最小的可重现示例,我的实际数据涉及我在 100x100 矩阵中索引 500 个单元格(使用 x/y 坐标/索引数组,大小 (500x2),类似于上面的 b)。在这种情况下最好使用 for 循环吗?类似...
for i in b:
for j in b:
result2 = np.array(a)[i,j]
【问题讨论】:
-
您的链接适用于列表,而不是 numpy 数组。 numpy 索引的参考是numpy.org/doc/stable/reference/arrays.indexing.html
标签: python arrays numpy indexing