a=
[[43655, 1428, 0, 2554]
[44580, 1428, 0, 2555]
[44930, 1428, 0, 2556]
[47708, 1428, 0, 2557]]
b=
[[41641, 1428, 0, 2554]
[44075, 1428, 0, 2555]
[44901, 1428, 1, 2556]
[45377, 1428, 0, 2557]
[48056, 1428, 0, 2558]]
New b=
[[41641, 1428, 0, 2554]
[44075, 1428, 0, 2555]
[44901, 1428, 1, 2556]
[45377, 1428, 0, 2557] 我有两个不相等行的numpy数组。就像。数组a有4行,而数组b有5行。
编辑:没有。数组中的行'b‘大于数组'a’。a:,3的每个元素都位于b:,3中。是否有任何函数只提取其b:,3=a:,3的数组b的行?
发布于 2015-07-23 06:20:06
您可以在列表理解中使用zip和np.equal比较第三列的元素,然后将结果转换为numpy数组,并从b数组中获取所需的行。
>>> b[np.array([np.equal(*I) for I in zip(a[:,3],b[:,3])])]
array([[41641, 1428, 0, 2554],
[44075, 1428, 0, 2555],
[44901, 1428, 1, 2556],
[45377, 1428, 0, 2557]])如果订单对您不重要,可以使用np.in1d:
>>> b[np.in1d(b[:,3],a[:,3])]
array([[41641, 1428, 0, 2554],
[44075, 1428, 0, 2555],
[44901, 1428, 1, 2556],
[45377, 1428, 0, 2557]])
>>> a=np.array([[100, 1], [101, 4], [106, 6], [104, 10]])
>>> b= np.array([[ 1, 1], [ 2, 2], [ 3, 3], [ 4, 4], [ 5, 5], [ 6, 6], [ 7, 7], [ 8, 8], [ 9, 9], [10, 10]])
>>>
>>> b[np.in1d(b[:,1],a[:,1])]
array([[ 1, 1],
[ 4, 4],
[ 6, 6],
[10, 10]])https://stackoverflow.com/questions/31567882
复制相似问题