假设我有两个数组:
a = numpy.array([1,2,3,4,5])
b = numpy.array([10,11,12])
我希望将这些数组添加在一起,但我希望从第一个数组中的索引 3 开始,以生成:
numpy.array([1,2,3,14,16,12]).
所以我基本上是在 a[3 中添加一个额外的 0 :] 使其与 b 的长度相同,然后将其与 b 相加,然后将此结果附加到 a[:3]。
这可以在 numpy 中一步完成,还是我只需实现这些步骤中的每一步?
def insert(data1, data2, offset):
c = numpy.zeros(len(data2) + offset )
c[:len(data1)] = data1
c[offset:] += data2
return c
可以使用数组切片和加法在一行代码中完成此操作:
import numpy as np
a = np.array([1, 2, 3, 4, 5])
b = np.array([10, 11, 12])
result = np.concatenate((a[:3], a[3:] + b))
print(result)
这将打印:
[ 1 2 3 14 16 12]
下面介绍了它的工作原理:
-
a[:3]
: 此部分切片数组a
以仅获取索引 3 之前的元素([1, 2, 3]
)。 -
a[3:]
: 此部分切片数组a
以获取从索引 3 开始的元素([4, 5]
)。 -
a[3:] + b
: 这会将切片的a
与b
相加,因为它们具有相同的形状,从而产生[14, 16]
。 -
np.concatenate((...))
: 这会连接两个结果数组[1, 2, 3]
和[14, 16]
,以生成最终数组[1, 2, 3, 14, 16, 12]
。