假设我有一个二维NumPy数组values
。我想添加新列。新列应为values[:, 19]
,但要滞后一个样本(第一个元素等于零)。它可以返回为np.append([0], values[0:-2:1, 19])
。我尝试过:Numpy concatenate 2D arrays with 1D array
temp = np.append([0], [values[1:-2:1, 19]])
values = np.append(dataset.values, temp[:, None], axis=1)
但是我得到了
ValueError: all the input array dimensions except for the concatenation axis
must match exactly
我也尝试使用c_
作为
temp = np.append([0], [values[1:-2:1, 19]])
values = np.c_[values, temp]
但是效果是一样的。如何进行串联。我认为问题在于temp
的方向-它被视为行而不是列,因此尺寸存在问题。在八度'
(转置运算符)中可以解决问题。也许在NumPy中有类似的解决方案?
无论如何,谢谢您的时间。
最好的问候,
最高
答案 0 :(得分:1)
In [76]: values = np.arange(16).reshape(4,4)
In [77]: temp = np.concatenate(([0], values[1:,-1]))
In [78]: values
Out[78]:
array([[ 0, 1, 2, 3],
[ 4, 5, 6, 7],
[ 8, 9, 10, 11],
[12, 13, 14, 15]])
In [79]: temp
Out[79]: array([ 0, 7, 11, 15])
使用concatenate
来制作temp
与使用append
(实际上使用concatenate
)类似。
您想要以这种方式加入values
和temp
的声音:
In [80]: np.concatenate((values, temp[:,None]),axis=1)
Out[80]:
array([[ 0, 1, 2, 3, 0],
[ 4, 5, 6, 7, 7],
[ 8, 9, 10, 11, 11],
[12, 13, 14, 15, 15]])
同样,我更喜欢直接使用concatenate
。
答案 1 :(得分:0)
您需要将1D数组转换为2D,如图所示。然后,可以将vstack或hstack与重塑一起使用,以获取所需的最终数组,如下所示:
a = np.array([[1, 2, 3],[4, 5, 6]])
b = np.array([[7, 8, 9]])
c = np.vstack([ele for ele in [a, b]])
print(c)
c = np.hstack([a.reshape(1,-1) for a in [a,b]]).reshape(-1,3)
print(c)
无论哪种方式,输出为:
[[1 2 3] [4 5 6] [7 8 9]]
希望我正确理解了这个问题