Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/352.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用字符串计算矩阵上nan值的数目_Python_Numpy - Fatal编程技术网

Python 使用字符串计算矩阵上nan值的数目

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

我想计算一个充满字符串值的矩阵中每列的“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作为字符串(
'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]])