假设有一个矩阵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]的向量Bnumpy有什么函数可以完成下面的工作吗?
b = [4, 0, 1]
>>>A.choose_row_wise(b) would output: [17, 46, 83]
oaxa6hgo1#
使用numpy.take_along_axis时:
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]
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]
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])
3条答案
按热度按时间oaxa6hgo1#
使用
numpy.take_along_axis
时:ecr0jaav2#
这可以使用索引来完成。
f45qwnt83#
也许你可以使用下面的代码: