在R中,很容易合并多个向量,例如:
a<-c(1,2,3)
b<-c(4,5,6,7)
c<-c(8,9,10)
#combine to
d<-c(a,b,c)
这就是我想用NumPy重新创建的内容。
我尝试使用np.append来实现这一点,只要所有数组具有相同的长度,它就可以正常工作,例如:
a = np.array([1,2,3])
b = np.array([4,5,6])
c = np.array([7,8,9])
d = np.append(a,(b,c)) #works fine
不过,
a = np.array([1,2,3])
b = np.array([4,5,6,7])
c = np.array([8,9,10])
d = np.append(a,(b,c)) #does not work fine
其结果是:[1,2 3 array([4,5,6,7]) array([8,9,10])]
。我如何将其转换为一个经典的NumPy数组[1 2 3 4 5 6 7 8 9 10]
?
1条答案
按热度按时间kdfy810k1#
我想你需要这个功能:
我说的对吗?
np.concatenate
用于沿着一个特定轴(默认为0
轴)连接维数相同但大小不同的数组。在本例中,由于只有一个维度,并且您希望连接唯一的维度,因此也可以使用np.hstack([a,b,c])
,如@ Semei Norimaki在注解中所述。EDIT在评论中回答您的问题:
在numpy的源代码中:
如您所见,要追加的
values
在追加之前被强制为numpy数组(这发生在ravel
函数中)。由于数组具有不同的形状,无法将它们转换为整数numpy数组,因此创建了numpy数组的numpy数组(尝试np.array((b,c))
,看看会发生什么)。由于这个原因,您正在将numpy数组的numpy数组附加到整数numpy数组,这会导致问题。