首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >np.concatenate不允许顺序连接

np.concatenate不允许顺序连接
EN

Stack Overflow用户
提问于 2020-05-06 05:19:42
回答 1查看 98关注 0票数 0

我一直在尝试用np.concatenate连接两个一维数组,但它不能像预期的那样工作。有没有人能告诉我哪里弄错了?

我的代码如下:

代码语言:javascript
运行
复制
x = np.array([1.13793103, 0.24137931, 0.48275862, 1.24137931, 1.00000000, 1.89655172])
y = np.array([0.03666667, 0.00888889, 0.01555556, 0.04      , 0.03222222, 0.06111111])

z = np.concatenate((x,y), axis=0)

print(z)
array([1.13793103, 0.24137931, 0.48275862, ... 0.04, 0.03222222, 0.06111111])

print(f'{type(x)} {type(y)} {type(z)}')
<class 'numpy.ndarray'> <class 'numpy.ndarray'> <class 'numpy.ndarray'>

print(f'{x.shape} {y.shape} {z.shape}')
(6,) (6,) (12,)

所以,不是将y作为新的数组添加,而是将两个数组连接起来,这不是我的本意。我正在寻找的东西如下:

代码语言:javascript
运行
复制
array([1.13793103, 0.24137931, 0.48275862, 1.24137931, 1.00000000, 1.89655172],
      [0.03666667, 0.00888889, 0.01555556, 0.04      , 0.03222222, 0.06111111])
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-05-06 05:52:08

如果要连接的数组中存在该维度,则可以使用np.concatenate沿某个轴进行连接:

代码语言:javascript
运行
复制
x = np.array([1,2,3])
y = np.array([4,5,6])

这里,x和y有形状(3,),所以只有一个轴。这意味着您只能沿着该轴(即axis=0)进行连接:

代码语言:javascript
运行
复制
z = np.concatenate((x,y))
z.shape
out : (6,)

沿着axis=1连接将抛出一个错误:

代码语言:javascript
运行
复制
z = np.concatenate((x,y), axis=1)
AxisError: axis 1 is out of bounds for array of dimension 1

如果对x和y进行重塑,则可以使np.concatenate工作:

代码语言:javascript
运行
复制
x, y = x.reshape(-1,1), y.reshape(-1,1)

现在,两者都具有形状(3,1),并且可以沿轴1连接:

代码语言:javascript
运行
复制
z = np.concatenate((x.reshape(-1,1),y.reshape(-1,1)),axis=1)
z.shape
(6,2)

或者,可以重塑为(1,3)并沿轴0连接:

代码语言:javascript
运行
复制
z = np.concatenate((x.reshape(1,-1),y.reshape(1,-1)),axis=0)
z.shape
(2,6)

或者使用np.vstack,它不需要重新整形。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61623257

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档