我希望能够将一维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操作。
得到两个Slices
-一个从start
到last-1
,另一个从start+1
到last
并执行逐元素除法-
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