我有一个以下数组:
data=array([['beef', 'bread', 'cane_molasses', nan, nan, nan],
['brassica', 'butter', 'cardamom']])
如何删除 nan 以获得:
array([['beef', 'bread', 'cane_molasses'],
['brassica', 'butter', 'cardamom']])
我已经尝试了here中给出的方法但这不起作用,因为在我的情况下,我的数组具有更高的维度,并且不是一个简单的向量。
最佳答案
object
数据类型数组不支持矢量化操作。但是您可以先将其转换为 list
,然后再转换回数组。这里我们使用事实np.nan != np.nan
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数组,则需要指定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)
关于python - 从字符串数组中删除 nan,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53266170/