我認爲自己是一個經驗豐富的numpy用戶,但我無法找到解決方案,以解決以下問題。假設有下面的數組:Numpy blockwise減少操作
# sorted array of times
t = numpy.cumsum(numpy.random.random(size = 100))
# some values associated with the times
x = numpy.random.random(size=100)
# some indices into the time/data array
indices = numpy.cumsum(numpy.random.randint(low = 1, high=10,size = 20))
indices = indices[indices <90] # respect size of 100
if len(indices) % 2: # make number of indices even
indices = indices[:-1]
# select some starting and end indices
istart = indices[0::2]
iend = indices[1::2]
我現在想的是,以減少值數組x
鑑於istart
和iend
表示的間隔。即
# e.g. use max reduce, I'll probably also need mean and stdv
what_i_want = numpy.array([numpy.max(x[is:ie]) for is,ie in zip(istart,iend)])
我已經用Google搜索了很多,但通過stride_tricks
只允許普通塊所有我能找到的是按塊操作。我沒能找到一個解決方案,而不執行pyhthon環:-( 在我的實際應用中的數組是更大,性能此事做,所以我用numba.jit
的時刻。
是否有任何numpy的功能我缺少這是能夠做到這一點
'x'總會在'[0,1)'中有浮點數嗎? – Divakar
編號'x'通常是一個更復雜的數組結構。 –