繁体   English   中英

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

[英]numpy add column of values to multidimentional array for differentiation

我有一个形状数组,如下所示:(162060,2,128)我使用numpy.diff(步骤等于1)执行了微分,现在微分数组的形状为:(162060,2,127),我希望以前的形状为将零添加到每个元素的2个数组的第一列,即(2,127)->(2,128)

我该如何执行呢? 使用numpy.concatenate并没有帮助,因为它添加到结尾,我希望零开头

您正在寻找numpy插入。 在此处阅读文档

更新资料

要使用numpys插入函数,请按照以下步骤操作:

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

  2. pos指定插入位置

  3. obj指定要插入的内容

  4. axis = 0是可选的,它指定沿其插入值的轴。 如果axis为None,则arr首先被展平。

如果要添加零(例如),可以使用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)

虽然您可以扩展其他答案的方式(或者适当使用串联),但从代码可读性的角度来看,我认为创建写大小的数组并显式地讲更有意义。区分成那个数组。 对我来说,这是最易读的版本。

derivatives = np.zeros_like(values)
derivatives[:,:,1:] = np.diff(values)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM