我有一个numpy数组,其中包含各种长度的numpy数组。
import numpy as np
lst =[[1,2,3],[1,2,3,4,5],[1,2]]
np_array = np.array([np.array(i) for i in lst])
print(np_array)
array([array([1, 2, 3]), array([1, 2, 3, 4, 5]), array([1, 2])],
dtype=object)
我想将多维数组转换为n * n 2d数组,以零或nan填充空值。
array([[1, 2, 3, 0, 0],
[1, 2, 3, 4, 5],
[1, 2, 0, 0, 0]])
我可以使用列表推导,并用零填充它们,直到长度匹配为止。
np.array([[l[i] if len(l)>i else 0 for i in range(5) ] for l in np_array])
array([[1, 2, 3, 0, 0],
[1, 2, 3, 4, 5],
[1, 2, 0, 0, 0]])
是否有一种numpy / Pandas方式。我有一个非常大的700万行数据集,要使用列表推导要花很多时间。
我尝试了Pandas pd.Series.str.split(',',expand = True)
将每一行转换为字符串,但是由于内存问题而无法处理它。