array=np.array([1,2,3,2,np.nan,4,3,4,5, np.nan]),先判断array数组是否有NaN值。若有,请将其中所有的NaN替换为0
第一问已解答
求如何用for循环来把nan值替换为0
不多说了,直接看代码吧,列举了三种方法
import numpy as np
import math
array = np.array([1, 2, 3, 2, np.nan, 4, 3, 4, 5, np.nan])
print(array)
# 法一
new_array1 = list(map(lambda x: 0.0 if math.isnan(x) else x, array))
print(new_array1)
# 法二 for循环
new_array2 = []
for x in array:
if math.isnan(x):
x = 0.0
new_array2.append(x)
print(new_array2)
# 法三 np.nan_to_num()
new_array3 = np.nan_to_num(array)
print(new_array3)
运行结果:
import numpy as np
array = np.array([1, 2, 3, 2, np.nan, 4, 3, 4, 5, np.nan])
flag = np.isnan(array).any()
if flag:
print("数组中存在NaN值")
array = np.nan_to_num(array, nan=0)
print("替换NaN值后的数组:", array)
else:
print("数组中没有NaN值")
import numpy as np
# 方式一
array = np.array([1, 2, 3, 2, np.nan, 4, 3, 4, 5, np.nan])
flag = np.isnan(array).any()
if flag:
#存在nan,直接使用 numpy 自带的函数替换
array = np.nan_to_num(array,nan=0)
print(array)
# 方式二:使用for循环替换nan
array = np.array([1, 2, 3, 2, np.nan, 4, 3, 4, 5, np.nan])
flag = np.isnan(array).any()
for index,value in enumerate(np.isnan(array)):
if value:
array[index] = 0
print(array)
【以下回答由 GPT 生成】
import numpy as np
array = np.array([1, 2, 3, 2, np.nan, 4, 3, 4, 5, np.nan])
for i in range(len(array)):
if np.isnan(array[i]):
array[i] = 0
print(array)
这里使用了一个简单的for循环来遍历数组中的每个元素。通过使用np.isnan()
函数判断元素是否为NaN,如果是NaN,就将该元素替换为0。最后输出替换后的数组。
输出结果为:
[1. 2. 3. 2. 0. 4. 3. 4. 5. 0.]
【相关推荐】