Python 使用字符串计算矩阵上nan值的数目
我想计算一个充满字符串值的矩阵中每列的“nan”值的数量。像这个: m: 我尝试使用Python 使用字符串计算矩阵上nan值的数目,python,numpy,Python,Numpy,我想计算一个充满字符串值的矩阵中每列的“nan”值的数量。像这个: m: 我尝试使用np.count\u nonzero(~np.isnan(m)),但它似乎只适用于数值。如果我将其转换为空字符串或零(?) 此外,我还创建了一个带有字符串的示例numpy数组(尝试了几个选项)(np.array(['a','b'],['c','d'],['e','f'],['e','g'],['k','ñ'],['w','q'],['y','d']])但是当我使用np nan时,它似乎无法正常工作,因为它将nan
np.count\u nonzero(~np.isnan(m)
),但它似乎只适用于数值。如果我将其转换为空字符串或零(?)
此外,我还创建了一个带有字符串的示例numpy数组(尝试了几个选项)(np.array(['a','b'],['c','d'],['e','f'],['e','g'],['k','ñ'],['w','q'],['y','d']])
但是当我使用np nan时,它似乎无法正常工作,因为它将nan作为字符串('nan添加了
谢谢,您可以将数组转换为数字形式(我无法用NaN复制数组,但您可以使用函数为非字符串返回0):
[['CB_2' 'CB_3']
['CB_1-1' 'CB_4-1']
['CB_1-2' 'CB_4-2']
['CB_2-1' 'CB_5-1']
['CB_2-2' 'CB_5-2']
[nan 'CB_6-1']
[nan 'CB_6-2']]
def f(x):
if isinstance(x, str):
if x == 'nan':
return 0
else:
return 1
return 0
vf = np.vectorize(f)
x = np.array([['CB_2', 'CB_3'],
['CB_1-1', 'CB_4-1'],
['CB_1-2', 'CB_4-2'],
['CB_2-1', 'CB_5-1'],
['CB_2-2', 'CB_5-2'],
[np.nan, 'CB_6-1'],
[np.nan, 'CB_6-2']])
>>> x
array([['CB_2', 'CB_3'],
['CB_1-1', 'CB_4-1'],
['CB_1-2', 'CB_4-2'],
['CB_2-1', 'CB_5-1'],
['CB_2-2', 'CB_5-2'],
['nan', 'CB_6-1'],
['nan', 'CB_6-2']], dtype='<U6')
>>> vf(x)
array([[1, 1],
[1, 1],
[1, 1],
[1, 1],
[1, 1],
[0, 1],
[0, 1]])