Numpy - 为什么尝试删除行时NaN的值错误

Dar*_*ick 0 python arrays numpy

我有一个numpy数组:

A = array([['id1', '1', '2', 'NaN'],
           ['id2', '2', '0', 'NaN']])
Run Code Online (Sandbox Code Playgroud)

我也有一个清单:

li = ['id1', 'id3', 'id6']
Run Code Online (Sandbox Code Playgroud)

我希望迭代数组和列表,并且数组的每一行中的第一个元素不在列表中,然后从数组中删除整行.

我的代码到目前为止:

from numpy import *

for row in A:
    if row[0] not in li:
        delete(A, row, axis = 0)
Run Code Online (Sandbox Code Playgroud)

这将返回以下错误:

ValueError: invalid literal for int() with base 10: 'NaN'
Run Code Online (Sandbox Code Playgroud)

每行中所有元素的类型都是str(),因此我不理解错误中提到的int().

有什么建议?

谢谢,S ;-)

ato*_*ter 5

只是生成一个新阵列是没有选择的吗?

numpy.array([x for x in A if x[0] in li])
Run Code Online (Sandbox Code Playgroud)