Python新手,并且一直在学习数组。我坚持一个足够简单的问题,需要一个解决方案。我有两个阵列:Python:比较两个数组的所有元素并修改第二个数组
a = [2.0, 5.1, 6.2, 7.9, 23.0] # always increasing
b = [5.1, 5.5, 5.7, 6.2, 00.0] # also always increasing
和欲得到的数组是:
c = [0.0, 5.1, 6.2, 0.0, 0.0] # 5.5, 5.7, 00.0 from 'b' were dropped and rearranged such that position of equivalent elements as in 'a' are maintained
我比较两者 '一' & 'B' 使用numpy的如:
y = np.isclose(a, b)
print y
# [False False False False False]
(或者)我也尝试过这样的事情,这是不正确的方式(我认为):
c = np.zeros(len(a))
for i in range (len(a)):
for j in range (len(a)):
err = abs(a[i]-b[j])
if err == 0.0 or err < abs(1):
print (err, a[i], b[j], i, j)
else:
print (err, a[i], b[j], i, j)
如何从这里开始获取'c'?
尝试'y = np.isclose(a,b,atol = 0.05)'。 – Norman
它不影响结果。把'atol = 0.5'给出'[False True False False]',这是'c'bool明智的。 – rNov
我是否简单地将'a'的元素值复制到'True'值的位置?还是有更好的方法呢? – rNov