gpt4 book ai didi

python - 如何根据另一个二维数组中给定的索引对二维数组进行切片

转载 作者:行者123 更新时间:2023-12-04 10:09:24 26 4
gpt4 key购买 nike

我有一个 MxN名为 A 的数组存储我想要的数据。我还有一个 M x N2阵列 B存储数组索引,和 N2<N .每排B存储我想从该行的 A 获取的元素的索引。例如,以下代码对我有用:

A_reduced = np.zeros((M,N2))
for i in range(M):
A_reduced[i,:] = A[i,B[i,:]]

是否有任何“矢量化”方法可以从 A 中提取所需元素基于 B而不是遍历每一行?

最佳答案

您可以利用数组索引并使用 reshape:

# set up M=N=4, N2=2
a = np.arange(16).reshape(4,4)
b = np.array([[1,2],[0,1],[2,3],[1,3]])

row_idx = np.repeat(np.arange(b.shape[0]),b.shape[1])
col_idx = b.ravel()

# output:
a[row_idx, col_idx].reshape(b.shape)

输出:
array([[ 1,  2],
[ 4, 5],
[10, 11],
[13, 15]])

更新 : 另一个类似的解决方案
row_idx = np.repeat(np.arange(b.shape[0]),b.shape[1]).reshape(b.shape)

# output
a[row_idx,b]

关于python - 如何根据另一个二维数组中给定的索引对二维数组进行切片,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61400726/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com