如何将数组从dtype = object转换为dtype = np.int

时间:2018-09-02 11:35:41

标签: python arrays numpy

当前,我得到的数组是

arr = array([array([ 2,  7,  8, 12, 14]), array([ 3,  4,  5,  6,  9, 10]),
   array([0, 1]), array([11, 13])], dtype=object)

如何将其转换为array([[ 2, 7, 8, 12, 14], [ 3, 4, 5, 6, 9, 10], [0, 1], [11, 13]])

我尝试了arr.astype(np.int),但失败了

1 个答案:

答案 0 :(得分:1)

数组dtype始终为object。这是不可避免的,因为使用NumPy,只能将非锯齿状的 n 维数组保留在连续的内存块中。

请注意,您的组成数组已经是int dtype:

arr[0].dtype  # dtype('int32')

请注意,您的逻辑也适用于非锯齿形数组:

arr = np.array([np.array([ 2,  7,  8]),
                np.array([ 3,  4,  5])], dtype=object)

arr = arr.astype(int)

arr.dtype  # dtype('int32')

实际上,在这种情况下,数组的数组折叠为单个数组:

print(arr)

array([[2, 7, 8],
       [3, 4, 5]])

对于带有锯齿状数组的计算,相对于列表列表,您可能会看到一些性能优势,但好处可能是有限的。另请参见How do I stack vectors of different lengths in NumPy?