从字符串数组中删除nan

2024-06-17 13:55:15 发布

您现在位置:Python中文网/ 问答频道 /正文

我有以下数组:

data=array([['beef', 'bread', 'cane_molasses', nan, nan, nan],
       ['brassica', 'butter', 'cardamom']])

如何删除nan以获得:

 array([['beef', 'bread', 'cane_molasses'],
       ['brassica', 'butter', 'cardamom']])

我已经尝试了here中给出的方法,但是这不起作用,因为在我的例子中,我的数组是高维的,不是简单的向量。你知道吗


Tags: 方法datahere数组nanarray向量例子
1条回答
网友
1楼 · 发布于 2024-06-17 13:55:15

objectdtype数组不支持向量化操作。但是您可以进行一次往返转换,首先转换为list,然后再转换回数组。这里我们使用事实^{} by design

data = np.array([['beef', 'bread', 'cane_molasses', np.nan, np.nan, np.nan],
                 ['brassica', 'butter', 'cardamom']])

res = np.array([[i for i in row if i == i] for row in data.tolist()])

array([['beef', 'bread', 'cane_molasses'],
       ['brassica', 'butter', 'cardamom']], 
      dtype='<U13')

注意,结果数组将是字符串类型(这里的最大长度为13)。如果需要可以容纳任意对象的object数据类型数组,则需要指定dtype=object

res = np.array([[i for i in row if i == i] for row in data.tolist()], dtype=object)

array([['beef', 'bread', 'cane_molasses'],
       ['brassica', 'butter', 'cardamom']], dtype=object)

相关问题 更多 >