Numpy将一个数组添加到另一个数组



A = np.array([])
B = np.array([1,2])
C = np.array(["hey"])
D = np.array([])

我正在寻找一个函数,它可以将数组B、C、D附加到a。但不是值,而是整个数组:

所以A应该是这样的:

A = np.array([[1,2],["hey"],[])

附加不起作用,连接以及堆栈等也不起作用。因为数组不一定具有相同的形状。例如,有没有办法在追加时指定类型?

追加不是在numpy中就地完成的,因为它在固定缓冲区上操作。由于你的列表参差不齐,你可以这样做:

A = np.array([B, C, D])

在这种特殊情况下,dtype将自动为object,结果将是一个数组数组。

这基本上违背了使用numpy的目的:当涉及到追加和删除操作时,数组比列表慢。相反,最好使用一个列表:

A.extend([B, C, D])

或者,如果您试图描述一个结构化的数据类型,您可以使用numpy:有效地做到这一点

dt = np.dtype([('b', float, 2), ('c', 'U3'), ('d', float, 0)])
A = np.array([(B, C.item(), D)], dtype=dt)