2017-01-09 103 views
0

我希望做的是能夠將1維numpy數組中的值除以下列值。例如,我有一個看起來像這樣的數組。將每個元素除以NumPy數組中的下一個元素

[ 0 20 23 25 27 28 29 30 30 22 20 19 19 19 19 18 18 19 19 19 19 19 ] 

我想這樣做:

0/20 #0th value divided by 1st value 
20/23 #1st value divided by 2nd value 
23/25 #2nd value divided by 3rd value 
25/27 #3rd value divided by 4th value 
etc... 

我可以很容易地做到這一點,通過一個循環,但是我在想,如果有一個與numpy的操作這樣做的更有效的方法。

回答

4

獲得兩個Slices - 一個從startlast-1,另一名來自start+1last並進行逐元素師 -

a[:-1]/a[1:] 

爲了讓浮點部門 -

np.true_divide(a[:-1],a[1:]) 

或者把from __future__ import division和然後使用a[:-1]/a[1:]

views置入輸入數組中,這些切片真正有效地被訪問用於元素方式的分割操作。

採樣運行 -

In [56]: a # Input array 
Out[56]: array([96, 81, 48, 53, 18, 92, 79, 43, 13, 69]) 

In [57]: from __future__ import division 

In [58]: a[:-1]/a[1:] 
Out[58]: 
array([ 1.18518519, 1.6875 , 0.90566038, 2.94444444, 0.19565217, 
     1.16455696, 1.8372093 , 3.30769231, 0.1884058 ]) 

In [59]: a[0]/a[1] 
Out[59]: 1.1851851851851851 

In [60]: a[1]/a[2] 
Out[60]: 1.6875 

In [61]: a[2]/a[3] 
Out[61]: 0.90566037735849059 
相關問題