matlab logical数组或运算,Matlab在Python中的等价物:不同长度数组上的逻辑异或?...

MATLAB/倍频程setxorReturn the elements exclusive to A or B, sorted in ascending order.

这是一个固定的操作octave:2> setxor([1,2,3,4],[5,3])

ans =

1 2 4 5

np.logical_xor是逐元素比较,而不是set操作。在

我想在numpy中有一些set操作,但我应该查一下。我知道Python中有一个set类

^{pr2}$

setdiff1d是一个set difference函数,可以用作In [188]: xa=np.array([1,2,3,4])

In [189]: ya=np.array([5,3])

In [190]: np.concatenate([np.setdiff1d(xa,ya),np.setdiff1d(ya,xa)])

Out[190]: array([1, 2, 4, 5])

它使用np.unique和np.in1d;可以使用这些函数重写setxor。在In [199]: np.concatenate([xa[np.in1d(xa,ya,invert=True)],

ya[np.in1d(ya,xa,invert=True)]])

Out[199]: array([1, 2, 4, 5])

(可能需要先使用xa=np.unique(xa)等)。在

我的猜测是,如果有一个已定义的setxor函数,它将由这些相同的部分构建。在

宾果,谷歌搜索numpy set operations产生:In [201]: np.setxor1d(xa,ya)

Out[201]: array([1, 2, 4, 5])

它是:(对于2个唯一的数组)aux = np.concatenate( (ar1, ar2) )

aux.sort()

flag = np.concatenate( ([True], aux[1:] != aux[:-1], [True] ) )

flag2 = flag[1:] == flag[:-1]

return aux[flag2]

所以它对数组进行排序连接,然后删除不唯一的元素。在

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值