作者:zwjy2018 | 来源:互联网 | 2023-05-25 14:13
假设我有一维数组a
:
[ 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.]
还有一个较短的1-D乘法因子数组b
[1,0.66,0.33,0] - 我想用它来乘以最后的元素a
; 所以在这种情况下,从索引6(从0开始)开始a
:
[ 1. 0.66 0.33 0.]
......获得:
[ 1.0 2.0 3.0 4.0 5.0 6.0 7.0 5.33 3.0 0.0]
......基本上,1-D"淡出".我可以使用普通的Python代码执行此操作:
import numpy as np
a = np.linspace(1, 10, 10)
print(a)
# [ 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.]
b = np.linspace(1, 0, 4)
print(b)
# [ 1. 0.66666667 0.33333333 0. ]
# multiply last 4 elements of 'a' element-wise with 'b':
res = []
insertAt = len(a)-len(b) # 6; lendiff
for inda, anum in enumerate(a):
if inda
...但是我怎么能在Numpy矢量化单行中做到这一点?我想使用类似的东西:
res = np.XXX( ... a, ... b, ...)
...并获得结果,既不改变a
也不改变b
,也不做任何多余的调整大小操作.numpy有可能吗?在这里使用较旧的Numpy v.1.5.1,但也欢迎关于新版本的答案......
1> Ashwini Chau..:
使用第二个数组的长度和第二个数组的多个切片取第一个数组的负片:
>>> arr1 = np.arange(1, 11, dtype=float)
>>> arr2 = np.linspace(1, 0, 4)
>>> res = arr1.copy()
>>> res[-arr2.size:] *= arr2
>>> res
array([ 1. , 2. , 3. , 4. , 5. ,
6. , 7. , 5.33333333, 3. , 0. ])