我有两个阵列A和B,如下所示:
A = [[ 1 2 3 4]
[ 5 6 7 8]
[ 9 10 11 12]
[13 14 15 16]]
B = [3, 11]
现在我需要A的第4列中的值,其中行的值为B匹配的第3列和第3列。对于这种特殊情况,输出数组C应为:
C = [4, 12]
我尝试使用以下代码,但它返回一个空数组:
import numpy as np
A = np.array([[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12], [13, 14, 15, 16]])
B = np.array([3, 11])
C = A[np.where(B[:] == A[:][2]), 3]
print(C)
答案 0 :(得分:1)
您可以使用numpy.in1d
检查B
中哪些项目与A
第三列中的项目匹配。
>>> np.in1d(A[:, 2], B)
array([ True, False, True, False], dtype=bool)
现在使用这个布尔数组只需索引A&#39的第四列:
>>> A[:,3][np.in1d(A[:, 2], B)]
array([ 4, 12])
答案 1 :(得分:1)
这是一个纯Python实现,如果可以的话:
>>> A = [[ 1, 2, 3, 4], [ 5, 6, 7, 8], [ 9, 10, 11, 12], [13, 14, 15, 16]]
>>> B = [3,11]
>>> C = [l[3] for l in A if l[2] in B]
>>> C
[4, 12]