我已经定义了2个numpy数组2,3并将它们水平连接起来。
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列表做同样的事情
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数组,然后级联。但逻辑是,我必须在每次迭代时将行添加到空矩阵中。我试着按建议追加:
testing=[]
for i in range(3):
testing=testing.append([1,2,3])它给出的错误测试没有属性附加作为它的无类型。此外,如果我使用使用np.array([1,2,3])的1,3数组的逻辑,如何在for循环中做到这一点?
发布于 2015-07-14 11:57:49
你没做错什么。numpy.concatenate连接数组序列,together.which意味着它从当前数组的元素创建一个集成数组,在二维数组中,元素是嵌套列表,在一维数组中,元素是变量。
因此,这不是concatenate的工作,正如您所说的可以使用np.vstack:
>>> c=numpy.vstack((a,b))
>>> c
array([[1, 2, 3],
[4, 5, 6]])同样,在代码中,将list.append附加到列表并将元素就地添加到列表中,您不能将其分配给variable.instead,您只需在每次迭代中将append分配给testing即可。
testing=[]
for i in range(3):
testing.append([1,2,3])另外,作为一种更有效的方法,您可以使用列表理解列表创建该列表,如下所示:
testing=[[1,2,3] for _ in xrange(3)]发布于 2015-07-14 11:59:54
之所以会发生这种情况,是因为您正在沿着axis=0连接。
在第一个示例中:
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 在第二个例子中:
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编辑:
请注意,在第二个示例中,您只有一维数组。
In [35]: a=numpy.array([1,2,3])
In [36]: a.shape
Out[36]: (3,)如果数组的形状为(1,3),您将得到预期的结果:
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]])https://stackoverflow.com/questions/31405793
复制相似问题