Python 迭代numpy数组以比较不同数组的列
我是编程新手,有一个问题。如果我有两个numpy阵列:Python 迭代numpy数组以比较不同数组的列,python,arrays,numpy,Python,Arrays,Numpy,我是编程新手,有一个问题。如果我有两个numpy阵列: A = np.array([[1,0,3], [2,6,5], [3,4,1],[4,3,2],[5,7,9]], dtype=np.int64) B = np.array([[3,4,5],[6,7,9],[1,0,3],[4,5,6]], dtype=np.int64) 我想比较数组A的最后两列和数组B的最后两列,如果它们相等,则将整行输出到一个新数组。因此,这两个阵列的输出为: [1,0,3 1,0,3 5,7,9 6,7,9]
A = np.array([[1,0,3], [2,6,5], [3,4,1],[4,3,2],[5,7,9]], dtype=np.int64)
B = np.array([[3,4,5],[6,7,9],[1,0,3],[4,5,6]], dtype=np.int64)
我想比较数组A的最后两列和数组B的最后两列,如果它们相等,则将整行输出到一个新数组。因此,这两个阵列的输出为:
[1,0,3
1,0,3
5,7,9
6,7,9]
因为即使第一个元素与最后两行不匹配,最后两个元素也会匹配
这是我到目前为止的代码,但它甚至还没有工作。有人能给我一些提示吗
column_two_A = A[:,1]
column_two_B = B[:,1]
column_three_A = A[:,2]
column_three_B = B[:,2]
column_four_A = A[:,3]
column_four_B = B[:,3]
times = A[:,0]
for elementA in column_three_A:
for elementB in column_three_B:
if elementA == elementB:
continue
for elementC in column_two_A:
for elementD in column_two_B:
if elementC == elementD:
continue
for elementE in column_four_A:
for elementF in column_four_B:
if elementE == elementF:
continue
element.append(time)
print(element)
我想我通过熬夜找到了答案。。。谢谢大家!
`for i in range(len(A)):
for j in range(len(B)):
if A[i][1] == B[j][1]:
if A[i][2] == B[j][2]:
print(B[j])
print(A[i])`
Numpy拥有许多用于此类任务的功能。下面是一个检查a的值是否在B中的解决方案。添加
print()
语句并检查chk
、chk2
和x
是什么
import numpy as np
A = np.array([[1,0,3], [2,6,5], [3,4,1],[4,3,2],[5,7,9]], dtype=np.int64)
B = np.array([[3,4,5],[6,7,9],[1,0,3],[4,5,6]], dtype=np.int64)
c = []
for k in A:
chk = np.equal(k[-2:], B[:, -2:])
chk2 = np.all(chk, axis=1)
x = (B[chk2, :])
if x.size:
c.append(x)
print(c)
您的问题非常不清楚您的意思是要将A中的每一行与B中的每一行进行比较,并在两行的最后两个元素相同时返回这两行吗?另外,您的代码无法理解。请尝试将其正确格式化,以便我们至少可以读取它。因此,为了清楚起见,您希望将两个数组的行附加到新数组中吗?长度相等还是长度可变的数组与示例中的相同?是的,我希望两行都追加。阵列的长度不相等,这是我一直在努力解决的问题…非常感谢您的帮助。另外,给定的阵列总是nx3。所以总是会有三列,我只是不知道肯定会有多少行。