gpt4 book ai didi

python - 寻找最快的方法来找到 numpy 中两个等长数组之间的精确重叠

转载 作者:太空宇宙 更新时间:2023-11-03 13:06:07 27 4
gpt4 key购买 nike

我正在寻找最佳(最快)的方法来找到 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 的数组,值来自 bc,取决于 a 的相应元素是否为真。 bc 可以是标量。

顺便说一下,对于两个正数,x & y 不一定“始终为真”。它确实 bitwise-and对于 xy 中的元素:

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 零,相应的元素在yn 1s。一般来说,对于两个非零数aba & b可能等于零,或者非零但不一定等于ab

关于python - 寻找最快的方法来找到 numpy 中两个等长数组之间的精确重叠,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2148110/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com