如何在 np 数组中添加一个字符串

How can I add a string in nparray

这是我的代码:

age=request.user.allusers.age
sex=request.user.allusers.sex
index_array = np.array(states)
index_array = [val-1 for val in index_array]
mask_array = np.zeros(193,dtype=float)
mask_array[index_array] = 1
mask_array=np.append(sex,mask_array)
mask_array=np.append(age,mask_array)
prob_array = clf.predict_proba([mask_array])

在代码中sex是一个字符串。因此,在编译时会出现值错误。如何在 numpy 数组中附加 sex

这是错误:

ValueError: could not convert string to float: 'Female'
  • 只需在列表中插入值
  • 将列表作为 numpy 数组的参数

    import numpy as np
    
    age=23
    sex="Female"
    
    info_list = [age, sex]
    print("This is list", info_list)
    
    numpy_info_list = np.array(info_list)
    print("This is numpy array", numpy_info_list)
    
  • 输出:

    This is list [23, 'Female']
    This is numpy array ['23' 'Female']
    
  • 通常这不利于预测以原始形式给出数据

  • 相反,您可以将 Female 转换为 ===> 0,将 Male 转换为 ====> 1
  • 我们应该始终尝试将值转换为数字
  • 性别是一种可以取数值的分类数据

  • 解决方案之一是使用 scikitlearn 标签编码器对特征进行编码,如果您对特定特征的值太多

  • 我知道使用标签编码器对特征进行编码很愚蠢,但这是一个解决方案
  • 这是一个例子...这只是一个与性有关的例子

    le = preprocessing.LabelEncoder()
    >>> le.fit(["male", "female"])
    LabelEncoder()
    >>> list(le.classes_)
    ['male', 'female']
    >>> le.transform(["male", "male", "female"]) 
    array([1, 1, 2]...)
    
  • 其他解决方案可以是使用字典:

    age=23
    sex="female"
    sex_map = {"male": 1, "female": 2}
    
    info_list = [age, sex_map[sex]]
    print("This is list", info_list)
    
  • 输出:

    This is list [23, 2]