比较不同形状的numpy数组,逐行,删除相同的值?

时间:2019-06-30 12:47:21

标签: python arrays numpy matrix compare

比较两个不同形状的数组,例如:

a:
([[1,2],
[3,4],
[5,6],
[7,8],
[9,10]])

b:
([[3,4],
[5,6]])

c = a -b

预期输出:

c:
([[1,2],
[7,8],
[9,10]])

到目前为止,我尝试过的结果通常是: 操作数不能与形状(21,2)(5,2)一起广播

1 个答案:

答案 0 :(得分:0)

numpy有一个setdiff1d function,问题是它弄乱了数组(所以它们变成1d),结果也是1d。

使用from mechanize import Browser br = Browser() br.open('http://stulish.com/soumalya01') br.select_form(nr=0) form.set_all_readonly(False) #add this br.form.set_value('ABC', nr=1) print(br.form.controls[1]) br.submit() 的一个小技巧,我们可以使numpy认为您的数组已经是元组元素的一维数组,然后使用.view然后对其进行整形。

尝试一下:

setdiff1d

输出:

import numpy as np

a = np.array([[1, 2],
              [3, 4],
              [5, 6],
              [7, 8],
              [9, 10]])

b = np.array([[3, 4],
              [5, 6]])

a_rows = a.view([('', a.dtype)] * a.shape[1])
b_rows = b.view([('', b.dtype)] * b.shape[1])

c = np.setdiff1d(a_rows, b_rows).view(a.dtype).reshape(-1, a.shape[1])

print(c)