数值数组的Numpy对象数组

ast*_*rog 5 python arrays numpy

我想创建一个数组dtype=np.object,其中每个元素都是一个数字类型的数组,例如int或float.例如:

>>> a = np.array([1,2,3])
>>> b = np.empty(3,dtype=np.object)
>>> b[0] = a
>>> b[1] = a
>>> b[2] = a
Run Code Online (Sandbox Code Playgroud)

创造我想要的东西:

>>> print b.dtype
object

>>> print b.shape
(3,)

>>> print b[0].dtype
int64
Run Code Online (Sandbox Code Playgroud)

但我想知道是否没有办法在一行中写入第3行到第6行(特别是因为我可能想要连接100个数组).我试过了

>>> b = np.array([a,a,a],dtype=np.object)
Run Code Online (Sandbox Code Playgroud)

但这实际上将所有元素转换为np.object:

>>> print b.dtype
object

>>> print b.shape
(3,)

>>> print b[0].dtype
object
Run Code Online (Sandbox Code Playgroud)

有没有人有任何想法如何避免这种情况?

tom*_*m10 3

它并不完全漂亮,但是......

import numpy as np

a = np.array([1,2,3])
b = np.array([None, a, a, a])[1:]

print b.dtype, b[0].dtype, b[1].dtype
# object int32 int32
Run Code Online (Sandbox Code Playgroud)