python - 从字符串数组中删除 nan

标签 python arrays python-2.7 list numpy

我有一个以下数组:

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/

相关文章:

python - 查找列表中多个出现项目的索引

python - 如何优化 Spark SQL 中的非等值连接?

python - Django 重启服务器或 httpd

c++ - 使用数组和某些方法来 memcpy struct 是否安全?

python - 运行时错误 : Attempting to deserialize object on a CUDA device

python - 在特定字符后提取文本

python - 如何在 Django 项目中设置 APScheduler?

javascript - 创建新的 javascript 数组,从对象属性中提取数据

c - 将 int 与 char 数组相加

python - 扭曲的服务器信息