繁体   English   中英

使用numpy串联或numpy追加时如何保持数组的形式

[英]How can I keep the forms of the arrays when I use numpy concatenate or numpy append

我有3个列表,并将它们放入ndarray。

o_a = [1,2,3,4,5]            
o_b = [2,4,6,8,10]
o_c = [11,22,33,44,55]
np_a = np.array(o_a)
np_b = np.array(o_b)
np_c = np.array(o_c)
print(np_a)
print(np_b)
print(np_c)

[1 2 3 4 5]
[ 2  4  6  8 10]
[11 22 33 44 55]

当我使用vstack加入它们时,它们的形式不会折叠

np.vstack((np_a,np_b))    
array([[ 1,  2,  3,  4,  5],
       [ 2,  4,  6,  8, 10]])

但是如果我使用串联或附加来组合它们,它就变成了1darray

np.concatenate((np_a,np_b))
array([ 1,  2,  3,  4,  5,  2,  4,  6,  8, 10])

数组可以保留表格吗? 工作后不使用重塑。

使用numpy.concatenate()numpy.append()

np.concatenate((np_a[None,:],np_b[None,:]), axis=0)

要么

np.append(np_a[None,:],np_b[None,:], axis=0)

输出(无论哪种情况):

array([[ 1,  2,  3,  4,  5],
       [ 2,  4,  6,  8, 10]])

现在,我们将每个数组转换为二维数组,然后再将它们连接在一起。

并且,在串联或附加它们时,我们指定串联或附加必须沿着输入数组的axis=0 (第一个轴)进行。

请注意, numpy.concatenate()numpy.append()不会创建任何新维度。 当您显式指定axis参数时,它们只是沿现有尺寸连接或附加。

当我们不指定axis参数时, numpy.concatenate()numpy.append()的默认行为是展平输入数组,并返回展平的数组。


使用numpy.stack():

np.stack ((np_a, np_b))

这也给出:

array([[ 1,  2,  3,  4,  5],
       [ 2,  4,  6,  8, 10]])

在这里,我们不必预先转换为二维。 新维度将由堆叠操作本身创建。

请注意, numpy.stack()也带有axis参数,但默认值为0,这是我们想要的。

另外,请注意,对于numpy.stack() ,我们为axis参数指定的值是相对于结果数组(具有一个额外的维数),而不是相对于原始输入数组。

暂无
暂无

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

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