比较二维数组
Comparing two dimensional arrays to one another
我想编写一个代码,输出数组 a,b,c
值的相似性。我想让代码检查数组之间是否有任何相似的值。我将比较 b and c
和 a
。所以比较a
和b
等时存在[ 0, 1624580882]
。两列必须相等才能进行比较。
import numpy as np
a= np.array([[ 0, 1624580882],
[ 1, 1624584458],
[ 0, 1624589467],
[ 1, 1624592213],
[ 0, 1624595336],
[ 1, 1624596349]])
b= np.array([[ 1, 1624580882],
[ 1, 1624584460],
[ 1, 1624595336],
[ 1, 1624596349]])
c = np.array([[ 0, 1624580882],
[ 1, 1624584458],
[ 0, 1624589495],
[ 1, 1624592238],
[ 0, 1624595336],
[ 1, 1624596349]])
预期输出:
b comparison
Similarities= None
c comparison
Similarities= [ 0, 1624580882],[ 1, 1624584464], [ 0, 1624595350],[ 1, 1624596380]
我不会为您提供实际的解决方案,而是可以通过一个简单的功能帮助您。您可以根据该功能设计其余代码。
def compare_arrays(arr_1, arr_2):
result = []
for row in arr_1:
result.append(row in arr_2)
return result
编辑:
用于获取重复值的索引。
from numpy.lib import recfunctions as rfn
ndtype = [('a', int)]
a = np.ma.array([1, 1, 1, 2, 2, 3, 3],mask=[0, 0, 1, 0, 0, 0, 1]).view(ndtype)
rfn.find_duplicates(a, ignoremask=True, return_index=True)
不是最漂亮的解决方案。但首先想到的是:
result = []
for row in a:
for irow in c:
if np.all(np.equal(row, irow)):
result.append(row)
break
我注意到 Fatin Ishrak Rafi
提出的解决方案不起作用。例如:
>>> [0, 1624589467] in c
>>> True
我想编写一个代码,输出数组 a,b,c
值的相似性。我想让代码检查数组之间是否有任何相似的值。我将比较 b and c
和 a
。所以比较a
和b
等时存在[ 0, 1624580882]
。两列必须相等才能进行比较。
import numpy as np
a= np.array([[ 0, 1624580882],
[ 1, 1624584458],
[ 0, 1624589467],
[ 1, 1624592213],
[ 0, 1624595336],
[ 1, 1624596349]])
b= np.array([[ 1, 1624580882],
[ 1, 1624584460],
[ 1, 1624595336],
[ 1, 1624596349]])
c = np.array([[ 0, 1624580882],
[ 1, 1624584458],
[ 0, 1624589495],
[ 1, 1624592238],
[ 0, 1624595336],
[ 1, 1624596349]])
预期输出:
b comparison
Similarities= None
c comparison
Similarities= [ 0, 1624580882],[ 1, 1624584464], [ 0, 1624595350],[ 1, 1624596380]
我不会为您提供实际的解决方案,而是可以通过一个简单的功能帮助您。您可以根据该功能设计其余代码。
def compare_arrays(arr_1, arr_2):
result = []
for row in arr_1:
result.append(row in arr_2)
return result
编辑:
用于获取重复值的索引。
from numpy.lib import recfunctions as rfn
ndtype = [('a', int)]
a = np.ma.array([1, 1, 1, 2, 2, 3, 3],mask=[0, 0, 1, 0, 0, 0, 1]).view(ndtype)
rfn.find_duplicates(a, ignoremask=True, return_index=True)
不是最漂亮的解决方案。但首先想到的是:
result = []
for row in a:
for irow in c:
if np.all(np.equal(row, irow)):
result.append(row)
break
我注意到 Fatin Ishrak Rafi
提出的解决方案不起作用。例如:
>>> [0, 1624589467] in c
>>> True