在 Python 中将 int 数组的值更改为 NaN(ValueError)
Changning value of int array to NaN in Python (ValueError)
如果我尝试:
ints = np.arange(10)
ints[0] = np.nan
我收到以下错误:
Error:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: cannot convert float NaN to integer
这里有解决方法吗?
到目前为止,我的解决方案是像这样将数组转换为 dtype=float:
casted = np.array(ints,dtype=float)
casted[0] = np.nan # no errors
我不知道你的实际问题是什么,但我有一个类似的问题,如果值是“错误测量”,我想将值设置为 NaN
。相反,我所做的是生成一个“正确索引”列表,其中所有非错误元素都用相应的索引表示:
# A sensor could measure distance and angle
non_error = np.where(distance != 4294967295) # 4294967295 indicates an error
non_error_angle = angle[non_error]
non_error_distance = distance[non_error]
在实际实现中,我有多个数据数组,它们都具有相同的错误索引,因此 non_error
列表可用于在所有数组中查找非错误元素,而不会出现混乱的风险提高数据的顺序,因为它们与索引相对应。
import pandas as pd
import numpy as np
如果需要 NAN 阵列,则:
array = np.empty(3)
array[:] = np.NaN
或者如果您需要更改给定值,则:
ints = np.arange(10).astype(float)
ints[0]=np.NAN
pdintseries=pd.Series(int).astype(dtype='Int64') #pandas has released support for nan containing Int64 dtypes.
您可以进一步将系列转换为 numpy 对象。
或直接:
int=np.arange(10).astype(object)
int[0]=np.NAN
没有具体解决您的问题,但这里有一些解决方法。
如果我尝试:
ints = np.arange(10)
ints[0] = np.nan
我收到以下错误:
Error:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: cannot convert float NaN to integer
这里有解决方法吗? 到目前为止,我的解决方案是像这样将数组转换为 dtype=float:
casted = np.array(ints,dtype=float)
casted[0] = np.nan # no errors
我不知道你的实际问题是什么,但我有一个类似的问题,如果值是“错误测量”,我想将值设置为 NaN
。相反,我所做的是生成一个“正确索引”列表,其中所有非错误元素都用相应的索引表示:
# A sensor could measure distance and angle
non_error = np.where(distance != 4294967295) # 4294967295 indicates an error
non_error_angle = angle[non_error]
non_error_distance = distance[non_error]
在实际实现中,我有多个数据数组,它们都具有相同的错误索引,因此 non_error
列表可用于在所有数组中查找非错误元素,而不会出现混乱的风险提高数据的顺序,因为它们与索引相对应。
import pandas as pd
import numpy as np
如果需要 NAN 阵列,则:
array = np.empty(3)
array[:] = np.NaN
或者如果您需要更改给定值,则:
ints = np.arange(10).astype(float)
ints[0]=np.NAN
pdintseries=pd.Series(int).astype(dtype='Int64') #pandas has released support for nan containing Int64 dtypes.
您可以进一步将系列转换为 numpy 对象。
或直接:
int=np.arange(10).astype(object)
int[0]=np.NAN
没有具体解决您的问题,但这里有一些解决方法。