当前,我得到的数组是
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)
,但失败了
答案 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?