填充任意值的Numpy广播

时间:2019-05-08 19:42:38

标签: python arrays pandas numpy

我有一个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)将每一行转换为字符串,但是由于内存问题而无法处理它。

0 个答案:

没有答案