2024-04-24 06:40:37 发布
网友
我尝试了以下方法:
>>> a = np.array([1,2,3]) >>> b = np.array([4,5,6]) >>> np.concatenate((a,b), axis=0) array([1, 2, 3, 4, 5, 6]) >>> np.concatenate((a,b), axis=1) array([1, 2, 3, 4, 5, 6])
不过,至少有一个结果是这样的
array([[1, 2, 3], [4, 5, 6]])
为什么它不是垂直连接的?
因为a和b都只有一个轴,因为它们的形状是(3),axis参数专门指要连接的元素的轴。
a
b
(3)
这个例子应该阐明concatenate对axis的作用。取两个双轴向量,形状为(2,3):
concatenate
(2,3)
a = np.array([[1,5,9], [2,6,10]]) b = np.array([[3,7,11], [4,8,12]])
沿第一个轴连接(第一个轴的行,然后是第二个轴的行):
np.concatenate((a,b), axis=0) array([[ 1, 5, 9], [ 2, 6, 10], [ 3, 7, 11], [ 4, 8, 12]])
沿第二个轴连接(第一个轴的列,然后是第二个轴的列):
np.concatenate((a, b), axis=1) array([[ 1, 5, 9, 3, 7, 11], [ 2, 6, 10, 4, 8, 12]])
要获得您提供的输出,可以使用vstack
vstack
a = np.array([1,2,3]) b = np.array([4,5,6]) np.vstack((a, b)) array([[1, 2, 3], [4, 5, 6]])
你仍然可以用concatenate来完成,但是你需要首先重塑它们:
np.concatenate((a.reshape(1,3), b.reshape(1,3))) array([[1, 2, 3], [4, 5, 6]])
最后,正如评论中所建议的,重塑它们的一种方法是使用newaxis:
newaxis
np.concatenate((a[np.newaxis,:], b[np.newaxis,:]))
如果当前的实际问题是垂直连接两个一维数组,并且我们不专注于使用concatenate来执行此操作,那么我建议使用np.column_stack:
In []: a = np.array([1,2,3]) In []: b = np.array([4,5,6]) In []: np.column_stack((a, b)) array([[1, 4], [2, 5], [3, 6]])
numpy的一个不知名的特性是使用r_。这是一种快速构建阵列的简单方法:
r_
import numpy as np a = np.array([1,2,3]) b = np.array([4,5,6]) c = np.r_[a[None,:],b[None,:]] print(c) #[[1 2 3] # [4 5 6]]
a[None,:]的目的是将轴添加到数组a。
a[None,:]
因为
a
和b
都只有一个轴,因为它们的形状是(3)
,axis参数专门指要连接的元素的轴。这个例子应该阐明
concatenate
对axis的作用。取两个双轴向量,形状为(2,3)
:沿第一个轴连接(第一个轴的行,然后是第二个轴的行):
沿第二个轴连接(第一个轴的列,然后是第二个轴的列):
要获得您提供的输出,可以使用
vstack
你仍然可以用
concatenate
来完成,但是你需要首先重塑它们:最后,正如评论中所建议的,重塑它们的一种方法是使用
newaxis
:如果当前的实际问题是垂直连接两个一维数组,并且我们不专注于使用
concatenate
来执行此操作,那么我建议使用np.column_stack:numpy的一个不知名的特性是使用
r_
。这是一种快速构建阵列的简单方法:a[None,:]
的目的是将轴添加到数组a
。相关问题 更多 >
编程相关推荐