python 获取行列号两个数组相等_python – 寻找在numpy中找到两个相等长度数组之间精确重叠的最快方法...
我正在尋找最佳(最快)的方法來找到numpy中兩個(gè)數(shù)組之間的確切重疊.給定兩個(gè)數(shù)組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)
我想得到的是一個(gè)長(zhǎng)度相同的數(shù)組,只包含兩個(gè)相等的數(shù)字:
array([1,0,0,0,5,0,0,4])
首先我試過了
x&y
array([1,0,0,0,5,0,6,4])
然后我意識(shí)到,對(duì)于兩個(gè)數(shù)字,如果它們是>則總是如此. 0.
解決方法:
result = numpy.where(x == y, x, 0)
請(qǐng)查看numpy.where文檔以獲取解釋.基本上,numpy.where(a,b,c),對(duì)于條件a,返回形狀a的數(shù)組,并且具有來自b或c的值,這取決于a的對(duì)應(yīng)元素是否為真. b或c可以是標(biāo)量.
順便說一下,x&對(duì)于兩個(gè)正數(shù),y不一定是“總是正確的”.它對(duì)x和y中的元素執(zhí)行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]
這是因?yàn)閤中每個(gè)元素的按位表示形式為1,后跟n個(gè)零,y中的對(duì)應(yīng)元素為n 1s.通常,對(duì)于兩個(gè)非零數(shù)字a和b,a& b可以等于零,或者非零,但不一定等于a或b.
標(biāo)簽:python,numpy
來源: https://codeday.me/bug/20190726/1546893.html
總結(jié)
以上是生活随笔為你收集整理的python 获取行列号两个数组相等_python – 寻找在numpy中找到两个相等长度数组之间精确重叠的最快方法...的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: gpu超算算法_科学网—GPU“虎山”探
- 下一篇: 学习:深入浅出之正则表达式(转)