繁体   English   中英

将NumPy 2D数组与列连接(1D数组)

[英]Concatenate NumPy 2D array with column (1D array)

假设我有一个2D NumPy数组values 我想添加新列。 新列应为values[:, 19]但滞后一个样本(第一个元素等于零)。 它可以作为np.append([0], values[0:-2:1, 19]) 我试过: Numpy将2D数组与1D数组连接

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中有类似的解决方案?

无论如何,谢谢您的时间。

最好的祝福,
马克斯

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 )相似。

听起来您想以这种方式连接valuestemp values

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

您需要如图所示将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]]

希望我正确理解了这个问题

暂无
暂无

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

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