[英]Compare numpy arrays of different shapes, row wise, delete same values?
比较两个不同形状的数组,例如:
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)一起广播
numpy有一个setdiff1d
函数 ,问题是将数组弄乱(因此它们变成1d),结果也为1d。
使用.view
一个小技巧,我们可以使numpy认为您的数组已经是1d并带有元组元素,然后使用setdiff1d
并在之后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)
输出:
[[ 1 2]
[ 7 8]
[ 9 10]]
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.