首页 文章

Python:numpy.insert NaN值

提问于
浏览
2

我正在尝试将 NaN 值插入到numpy数组的特定索引中 . 我一直收到这个错误:

TypeError:根据规则'safe',无法将数组数据从dtype('float64')转换为dtype('int64')

尝试使用以下代码时 .

x = np.array(range(1,11))
x = np.insert(x, 5, np.nan, axis=0)

但是,我可以将 NaN 值附加到数组的末尾,没有任何问题 .

x = np.array(range(1,11))
x = np.append(x, np.nan)

为什么这样,我如何在我的数组中插入NaN值?

1 回答

  • 3

    对于 x=np.array(range(1,11))dtype 默认为 int64 ,这会阻止您插入浮点数 .

    最简单的方法是强制 dtype 直接浮动:

    x = np.array(range(1, 11), dtype=float)
    

    使用 np.insert ,您只能使用初始数组的 dtype (在引擎盖下创建的临时数组使用输入的 dtype ) .

    但是,使用 np.append ,您实际上正在使用 np.concatenate ,它使用其输入的"largest" dtype 创建一个数组:在您的示例中, x 然后被转换为 float .


    请注意,您只需使用 np.arange 函数:

    x = np.arange(1, 11, dtype=float)
    

相关问题