构造一个numpy一维列表数组



如何我构造了一个列表的numpy一维数组

np.array([[1,2,3], [4,5,6]], dtype=np.object)

将创建(2,3(的numpy数组而我希望它是一维(2,(

例如,如果列表中不相等

np.array([[1,2,3], [4,5]], dtype=np.object)

它将导致一维(2

我知道numpy正试图优化类型和空间但我需要强制它是一维

我能做这个

arr = np.empty(2, dtype=object)
arr[0] = [1, 2, 3]
arr[1] = [1, 2, 4]

但它很丑陋,有更好的方法吗?

In [16]: arr = np.empty(2, dtype=object)
...: arr[0] = [1, 2, 3]
...: arr[1] = [1, 2, 4]
In [17]: arr
Out[17]: array([list([1, 2, 3]), list([1, 2, 4])], dtype=object)

您可以同时分配两个列表:

In [18]: arr = np.empty(2, dtype=object)
...: arr[:] = [[1, 2, 3],[1, 2, 4]]
In [19]: arr
Out[19]: array([list([1, 2, 3]), list([1, 2, 4])], dtype=object)

创建和填充是创建对象数据类型数组的最可靠方法。否则,您将受制于复杂的np.array函数。该函数的主要用途是生成多维数字数据类型数组。这些对象数据类型数组是后备选项,只有在无法生成"时才使用;适当的";numpy数组。

简单地指定CCD_ 2数据类型并不能告诉它期望的"数据类型";"深度";数组的。(2(和(2,3(是给定该嵌套列表的同样有效的形状。默认为多维。

请记住,对象dtype数组基本上是一个列表,几乎没有优点(如果有的话(。

最新更新