有没有办法将NaN的元素设置为0?

时间:2019-05-15 18:11:57

标签: python arrays pandas numpy

我有一个看起来像[[1,1,0,1,NaN],[NaN,2,3,4,5],[1,1,1,1,1]]的数组。我必须对这些数组进行一些优化计算,但是由于这些NaN的存在,我的解决方案也包含NaN。我尝试遍历数组并将NaN设置为0,但这没有用。

'''对于s中的i:        对于i中的j:            如果type(j)!= int:                j = 0 '''

我知道数组是不可变的。我想知道是否还有其他方法可以做到这一点?

3 个答案:

答案 0 :(得分:0)

如此简单:

a=np.array([[1,1,0,1, np.nan], [np.nan, 2, 3,4,5], [1,1,1,1,1]])
np.nan_to_num(a)

输出:

array([[1., 1., 0., 1., 0.],
       [0., 2., 3., 4., 5.],
       [1., 1., 1., 1., 1.]])

答案 1 :(得分:0)

您可以使用nan_to_num

或者您可以将其设为数据框并使用熊猫fillna()

     0  1   2   3   4
0   1.0 1   0   1   NaN
1   NaN 2   3   4   5.0
2   1.0 1   1   1   1.0

您可以df.fillna(0)

      0 1   2   3   4
0   1.0 1   0   1   0.0
1   0.0 2   3   4   5.0
2   1.0 1   1   1   1.0

答案 2 :(得分:0)

又快又脏,但应该可以工作:

var str1 = "Categ=All&Search=Jucs&Kin=LUU";
    
    
function splitter(str, index){
  return str.split(/[^A-Za-z0-9]/).filter((v,i)=>i%2=== index); 
} 

console.log(splitter(str1, 0)) //["Categ", "Search", "Kin"]
console.log(splitter(str1, 1))//["All", "Jucs", "LUU"]

希望这会有所帮助!