如何在numpy中选择不同行的不同元素?

nqwrtyyt  于 2023-02-12  发布在  其他
关注(0)|答案(3)|浏览(112)

假设有一个矩阵A

A = [[ 34 61 29 74(17)32 72 92 93 57 ]
     [(46)10 23 84 74 57 56 88 90 36 ]
     [ 23(83)58 42 93 54 82 48 63 73 ]]

以及大小为3 × b = [4, 0, 1]的向量B
numpy有什么函数可以完成下面的工作吗?

>>>A.choose_row_wise(b)
would output:
[17, 46, 83]
oaxa6hgo

oaxa6hgo1#

使用numpy.take_along_axis时:

b = np.array([4, 0, 1])
res = np.take_along_axis(A, b[:, None], axis=1).flatten()
print(res)
[17 46 83]
ecr0jaav

ecr0jaav2#

这可以使用索引来完成。

import numpy as np

A = np.array([[34, 61, 29, 74, 17, 32, 72, 92, 93, 57],[46, 10, 23, 84, 74, 57, 56, 88, 90, 36],[23, 83, 58, 42, 93, 54, 82, 48, 63, 73]])
b = np.array([4, 0, 1])
result = A[np.arange(len(b)), b]
[17 46 83]
f45qwnt8

f45qwnt83#

也许你可以使用下面的代码:

import numpy as np

A = np.array([[34,61,29,74,(17),32,72,92,93,57],[(46),10,23,84,74,57,56,88,90,36],[23,(83),58,42,93,54,82,48,63,73]])
b = [4, 0, 1]

print([A[b.index(i), i] for i in b])

相关问题