numpy将值列添加到multidimentional数组以进行区分

时间:2018-05-08 12:14:01

标签: python arrays numpy

我的形状数组如下:(162060,2,128) 我使用numpy.diff进行区分(步长等于1) 现在差异化阵列的形状是:(162060,2,127)并且我想通过向每个元素的2个数组的第一列添加零来获得先前的形状,即(2,127) - > (2128)

我该怎么做呢?使用numpy.concatenate没有帮助,因为它添加到最后,我希望零在开头

3 个答案:

答案 0 :(得分:0)

您正在寻找numpy插入。 在这里阅读documentation

<强>更新

要使用numpys插入功能,请执行以下操作:

X = np.insert(X, pos, obj, axis=0)
  1. X 指定要插入的目标对象

  2. pos 指定插入的位置

  3. obj 指定要插入的内容

  4. 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)