使用 numpy concatenate 或 numpy append 时如何保留数组的形式
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]])
但是如果我使用 concatenate 或 append 来组合它们,它就变成了 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()
的默认行为是展平输入数组,并且 return扁平数组。
使用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
参数指定的值是关于结果数组(它有一个额外的维度),并且与原始输入数组无关。
我有 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]])
但是如果我使用 concatenate 或 append 来组合它们,它就变成了 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()
的默认行为是展平输入数组,并且 return扁平数组。
使用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
参数指定的值是关于结果数组(它有一个额外的维度),并且与原始输入数组无关。