当前位置: 首页 > 面试题库 >

将nan值转换为零

施德元
2023-03-14
问题内容

我有一个二维的numpy数组。此数组中的一些值为NaN。我想使用此数组执行某些操作。例如考虑数组:

[[   0.   43.   67.    0.   38.]
 [ 100.   86.   96.  100.   94.]
 [  76.   79.   83.   89.   56.]
 [  88.   NaN   67.   89.   81.]
 [  94.   79.   67.   89.   69.]
 [  88.   79.   58.   72.   63.]
 [  76.   79.   71.   67.   56.]
 [  71.   71.   NaN   56.  100.]]

我试图每次取一行,以相反的顺序对其进行排序,以从行中获取最多3个值并取其平均值。我试过的代码是:

# nparr is a 2D numpy array
for entry in nparr:
    sortedentry = sorted(entry, reverse=True)
    highest_3_values = sortedentry[:3]
    avg_highest_3 = float(sum(highest_3_values)) / 3

这不适用于包含的行NaN。我的问题是,是否有一种快速的方法可以将NaN2D
numpy数组中的所有值都转换为零,以便我在排序和其他尝试做的事情上没有问题。


问题答案:

这应该工作:

from numpy import *

a = array([[1, 2, 3], [0, 3, NaN]])
where_are_NaNs = isnan(a)
a[where_are_NaNs] = 0

在上述情况下,where_are_NaNs为:

In [12]: where_are_NaNs
Out[12]: 
array([[False, False, False],
       [False, False,  True]], dtype=bool)


 类似资料:
  • 我从. csv文件读取数据到熊猫数据框如下。对于其中一个列,即,我想将列类型指定为。问题是系列缺少/空值。 当我在读取.csv时尝试将列强制转换为整数时,我得到: 或者,在阅读以下内容后,我尝试转换列类型,但这次我得到: 我如何处理这个问题?

  • 给定如下所示的数据帧 您可能会注意到,这里所有的列都已转换为类型。是否有办法将某些列转换为? 尝试了以下方法 这会引发错误 阅读有关可为空的整数数据类型的信息,然后重试 这会引发错误

  • 问题内容: 我在互联网上找到了一种将RGB值转换为HSV值的方法。不幸的是,当值是R = G = B时,由于0/0操作,我得到的是NaN。 您是否知道Java中是否存在用于此转换的实现方法,或者当我获得0/0除法以获取正确的HSV值时该怎么办? 这是我的方法,它是根据Internet上的一些代码改编而成的: 问题答案: 我很确定您想要的是RGBtoHSB

  • 问题内容: 我试图在我的数字列中附加一些alphabt来获取记录。但即时通讯收到错误,我尝试了强制转换和转换功能。 例如 这里StandardCost是一个数字字段,但是当我获取记录时遇到错误,请看看。 问题答案: 我认为应该 或者

  • 问题内容: 我收到 ValueError:无法将float NaN转换为整数 ,原因如下: “ x”显然是csv文件中的一列,但我无法在文件中发现任何 浮点NaN ,也无法理解其含义。 当我将列读为String时,它的值就像-1,0,1,… 2000,对我来说,它们看起来都非常漂亮。 当我将列读为float时,可​​以加载它。然后它显示值为-1.0,0.0等,仍然没有任何NaN-s 我尝试使用 e

  • 我想将时间间隔配置存储到数据库中,如下所示: 但是我不知道如何将例如值转换为LocalDateTime,因为我想使用此值来计算SQL查询的时间间隔。 将此值转换为LocaLDateTime的正确方法是什么?