我的形状数组如下:(162060,2,128) 我使用numpy.diff进行区分(步长等于1) 现在差异化阵列的形状是:(162060,2,127)并且我想通过向每个元素的2个数组的第一列添加零来获得先前的形状,即(2,127) - > (2128)
我该怎么做呢?使用numpy.concatenate没有帮助,因为它添加到最后,我希望零在开头
答案 0 :(得分:0)
您正在寻找numpy插入。 在这里阅读documentation 。
<强>更新强>
要使用numpys插入功能,请执行以下操作:
X = np.insert(X, pos, obj, axis=0)
X 指定要插入的目标对象
pos 指定插入的位置
obj 指定要插入的内容
axis = 0 是可选的,它指定了插入值的轴。如果axis为None,则首先将arr展平。
答案 1 :(得分:0)
如果要添加零(作为示例),可以使用numpy.pad()
函数:
import numpy as np
np.pad(array_to_expand, ((0, 0), (0, 0), (1, 0)), 'constant', constant_values=0)
另一种选择是使用numpy.dstack
:
np.dstack([np.zeros((162060, 2)), array_to_expand])
,或者
np.dstack([np.zeros(array_to_expand.shape[:2]), array_to_expand])
啊,最后,numpy.concatenate
:
np.concatenate([np.zeros((162060, 2, 1)), array_to_expand], axis=2)
,或者
np.concatenate([np.zeros(array_to_expand.shape[:2] + (1,)), array_to_expand], axis=2)
答案 2 :(得分:0)
虽然你可以扩展其他答案的方式(或正确使用连接,但就此而言),我认为从代码可读性的角度来看,创建写入大小的数组会更有意义,并明确区分到该数组。对我而言,这是最易读的版本。
derivatives = np.zeros_like(values)
derivatives[:,:,1:] = np.diff(values)