2024-09-30 20:23:41 发布
网友
我的数组是2D numpystr352,包含数字和字符串的混合体。 我想将它转换为float numpy,这样字符串元素应该转换为nan(不使用Pandas)
nan
例如:
import numpy as np x = np.array([[1, 2, 'tom'], [4, 'Manu', 6]])
我想要的是:
x = np.array([[1, 2, nan], [4, nan, 6]])
我的解决方案在展平的数组上迭代,并检查每种类型是否可以是float。如果没有,我将填写一个np.NaN。在此之后,我将使用dtype float将numpy数组重新创建为旧形状:
np.NaN
import numpy as np x = np.array([[1, 2, 'tom'], [4, 'Manu', 6]]) shape = x.shape x_nan = np.empty_like(x).flatten() for i,x in enumerate(x.flat): try: x_nan[i] = float(x) except: x_nan[i] = np.NaN x_nan = np.array(x_nan, dtype=np.float).reshape(shape) print(x_nan) # array([[ 1., 2., nan], # [ 4., nan, 6.]])
在多维数组中不可能使用建议的^{}here。另一方面,您可以使用^{}将genfromtext应用于2D数组的每一行,如here所述:
genfromtext
import numpy as np x = np.array([[1, 2, 'tom'], [4, 'Manu', 6]]) print(np.apply_along_axis(np.genfromtxt, 1 ,x))
这将提供:
[[ 1. 2. nan] [ 4. nan 6.]]
我的解决方案在展平的数组上迭代,并检查每种类型是否可以是float。如果没有,我将填写一个
np.NaN
。在此之后,我将使用dtype float将numpy数组重新创建为旧形状:在多维数组中不可能使用建议的^{} here。另一方面,您可以使用^{} 将
genfromtext
应用于2D数组的每一行,如here所述:这将提供:
相关问题 更多 >
编程相关推荐