首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >与numpy.concatenation的问题

与numpy.concatenation的问题
EN

Stack Overflow用户
提问于 2015-07-14 11:51:47
回答 2查看 6K关注 0票数 2

我已经定义了2个numpy数组2,3并将它们水平连接起来。

代码语言:javascript
复制
a=numpy.array([[1,2,3],[4,5,6]])
b=numpy.array([[7,8,9],[10,11,12]])
C=numpy.concatenate((a,b),axis=0)

C变成4,3矩阵,现在我试着用1,3列表做同样的事情

代码语言:javascript
复制
a=numpy.array([1,2,3])
b=numpy.array([4,5,6])
c=numpy.concatenate((a,b),axis=0)

现在我期待2,3矩阵,但我有1,6。我知道v堆栈等会起作用,但我很好奇为什么会发生这种情况?我对numpy.concatenate做了什么错事?

谢谢你的回复。我可以得到的结果,如建议,有1,3数组,然后级联。但逻辑是,我必须在每次迭代时将行添加到空矩阵中。我试着按建议追加:

代码语言:javascript
复制
testing=[]
for i in range(3):
   testing=testing.append([1,2,3])

它给出的错误测试没有属性附加作为它的无类型。此外,如果我使用使用np.array([1,2,3])的1,3数组的逻辑,如何在for循环中做到这一点?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-07-14 11:57:49

你没做错什么。numpy.concatenate连接数组序列,together.which意味着它从当前数组的元素创建一个集成数组,在二维数组中,元素是嵌套列表,在一维数组中,元素是变量。

因此,这不是concatenate的工作,正如您所说的可以使用np.vstack

代码语言:javascript
复制
>>> c=numpy.vstack((a,b))
>>> c
array([[1, 2, 3],
       [4, 5, 6]])

同样,在代码中,将list.append附加到列表并将元素就地添加到列表中,您不能将其分配给variable.instead,您只需在每次迭代中将append分配给testing即可。

代码语言:javascript
复制
testing=[]
for i in range(3):
   testing.append([1,2,3])

另外,作为一种更有效的方法,您可以使用列表理解列表创建该列表,如下所示:

代码语言:javascript
复制
testing=[[1,2,3] for _ in xrange(3)]
票数 2
EN

Stack Overflow用户

发布于 2015-07-14 11:59:54

之所以会发生这种情况,是因为您正在沿着axis=0连接。

在第一个示例中:

代码语言:javascript
复制
a=numpy.array([[1,2,3],[4,5,6]])     # 2 elements in 0th dimension 
b=numpy.array([[7,8,9],[10,11,12]])  # 2 elements in 0th dimension
C=numpy.concatenate((a,b),axis=0)    # 4 elements in 0th dimension 

在第二个例子中:

代码语言:javascript
复制
a=numpy.array([1,2,3])               # 3 elements in 0th dimension
b=numpy.array([4,5,6])               # 3 elements in 0th dimension     
c=numpy.concatenate((a,b),axis=0)    # 6 elements in 0th dimension

编辑:

请注意,在第二个示例中,您只有一维数组。

代码语言:javascript
复制
In [35]: a=numpy.array([1,2,3])

In [36]: a.shape
Out[36]: (3,)

如果数组的形状为(1,3),您将得到预期的结果:

代码语言:javascript
复制
In [43]: a2=numpy.array([[1,2,3]])

In [44]: b2=numpy.array([[4,5,6]])

In [45]: numpy.concatenate((a2,b2), axis=0)
Out[45]: 
array([[1, 2, 3],
       [4, 5, 6]])
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31405793

复制
相关文章

相似问题

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