将带有'n'和'y'的Numpy数组转换为0和1的整数数组

数据挖掘 Python 麻木的
2021-10-09 13:13:20

我有一个 NumPy 字符串数组:'n'、'y',想将其转换为 0、1 的整数数组,如何转换?

imp = SimpleImputer(missing_values=np.nan, strategy='most_frequent')
X = imp.fit_transform(X)

X

array([['n', 'y', 'n', ..., 'y', 'n', 'y'],
       ['n', 'y', 'n', ..., 'y', 'n', 'y'],
       ['n', 'y', 'y', ..., 'y', 'n', 'n'],
       ...,
       ['n', 'y', 'n', ..., 'y', 'n', 'y'],
       ['n', 'n', 'n', ..., 'y', 'n', 'y'],
       ['n', 'y', 'n', ..., 'y', 'n', 'n']], dtype=object)
4个回答

这是相当微不足道的

(X=='y').astype(int)

应该做的伎俩。它只是根据您的要求将您的数组转换为 True 或 False,然后 astype 将强加所需的数据类型。默认情况下,int 会给你 1 表示 True,0 表示 False。

您可以使用以下代码:

X[X=='y'] = 1
X[X=='n'] = 0

'y'这替换了with1和 of 'n'with的索引0通常X=='y'返回一个布尔数组,其中包含Truewhere'y'和 False 其他地方等等。

您可以使用 np.where 替换“n”和“y”。请在此处查看文档,

https://docs.scipy.org/doc/numpy/reference/generated/numpy.where.html

另外,请尽量详细说明您的问题,以便找到正确的解决方案。

你可以使用np.vectorize这个答案解释:

In [1]: import numpy as np

In [2]: a = np.array([['n', 'y', 'n', 'n', 'y', 'n', 'y'],
   ...:        ['n', 'y', 'n', 'n', 'y', 'n', 'y'],
   ...:        ['n', 'y', 'y', 'y', 'y', 'n', 'n']])
   ...:        

In [3]: my_map = {'n': 0, 'y': 1}

In [4]: np.vectorize(my_map.get)(a)
Out[4]: 
array([[0, 1, 0, 0, 1, 0, 1],
       [0, 1, 0, 0, 1, 0, 1],
       [0, 1, 1, 1, 1, 0, 0]])