我有一个数组,该数组由字符串形式的数字值和'?'组成代表缺失值的字符。我该如何用-999999等离群值替换那些字符?
我知道Panda的有一种方法,但是如何仅使用numpy做到这一点?试图通过以下方式找到这些值:
x=X[X=='?']
使用numpy替换,但完全没有运气。有帮助吗?
谢谢
答案 0 :(得分:4)
它与Pandas方法非常相似:
X[X == '?'] = '-999999'
这时,如果需要,可以使用来将值转换为整数
X = X.astype(int)
例如:
import numpy as np
X = np.array(['1', '2', '3', '?', '5'], dtype=object)
X[X == '?'] = '-999999'
X = X.astype(int)
print(X)
# array([ 1, 2, 3, -999999, 5])
答案 1 :(得分:2)
一种方法是使用numpy.place:
np.place(X,X=="?",-999999)
答案 2 :(得分:0)
您也可以使用np.where
:
print(np.where(X == '?', '-999999', X).astype(int))