首页 > 解决方案 > 根据给定的索引对列表连接二维数组行的有效方法

问题描述

假设我有一个包含大量行的二维数组,以及该数组的索引对列表。我想创建一个新的 2 dim 数组,其行是原始数组行的串联,根据索引对列表制作。例如:

a =
 
1 2 3

4 5 6

7 8 9

0 0 0


indexes = [[0,0], [0,1], [2,3]]

返回的数组应该是:

1 2 3 1 2 3

1 2 3 4 5 6

7 8 9 0 0 0

显然我可以迭代索引列表,但我的问题是是否有更有效的方法来做到这一点。应该说索引列表也很大。

标签: pythonarraysnumpy

解决方案


您可以使用 as 在一行中执行此操作NumPy

a = np.arange(12).reshape(4, 3)
print(a)

b = [[0, 0], [1, 1], [2, 3]]
b = np.array(b)
print(b)

c = a[b.reshape(-1)].reshape(-1, a.shape[1]*b.shape[1])
print(c)

'''
[[ 0  1  2]
 [ 3  4  5]
 [ 6  7  8]
 [ 9 10 11]]

[[0 0]
 [1 1]
 [2 3]]

[[ 0  1  2  0  1  2]
 [ 3  4  5  3  4  5]
 [ 6  7  8  9 10 11]]
'''

推荐阅读