python 获取行列号两个数组相等_python – 寻找在numpy中找到两个相等长度数组之间精确重叠的最快方法...

我正在寻找最佳(最快)的方法来找到numpy中两个数组之间的确切重叠.给定两个数组x和y

x = array([1,0,3,0,5,0,7,4],dtype=int)

y = array([1,4,0,0,5,0,6,4],dtype=int)

我想得到的是一个长度相同的数组,只包含两个相等的数字:

array([1,0,0,0,5,0,0,4])

首先我试过了

x&y

array([1,0,0,0,5,0,6,4])

然后我意识到,对于两个数字,如果它们是>则总是如此. 0.

解决方法:

result = numpy.where(x == y, x, 0)

请查看numpy.where文档以获取解释.基本上,numpy.where(a,b,c),对于条件a,返回形状a的数组,并且具有来自b或c的值,这取决于a的对应元素是否为真. b或c可以是标量.

顺便说一下,x&对于两个正数,y不一定是“总是正确的”.它对x和y中的元素执行bitwise-and:

x = numpy.array([2**p for p in xrange(10)])

# x is [ 1 2 4 8 16 32 64 128 256 512]

y = x - 1

# y is [ 0 1 3 7 15 31 63 127 255 511]

x & y

# result: [0 0 0 0 0 0 0 0 0 0]

这是因为x中每个元素的按位表示形式为1,后跟n个零,y中的对应元素为n 1s.通常,对于两个非零数字a和b,a& b可以等于零,或者非零,但不一定等于a或b.

标签:python,numpy

来源: https://codeday.me/bug/20190726/1546893.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值