Python:numpy.insert NaN值

nat*_*002 3 python arrays numpy

我正在尝试将NaN值插入numpy数组的特定索引。我不断收到此错误:

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

尝试使用以下代码进行操作时。

x = np.array(range(1,11))
x = np.insert(x, 5, np.nan, axis=0)
Run Code Online (Sandbox Code Playgroud)

但是,我可以NaN毫无问题地将值附加到数组的末尾。

x = np.array(range(1,11))
x = np.append(x, np.nan)
Run Code Online (Sandbox Code Playgroud)

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

Pie*_* GM 5

使用时x=np.array(range(1,11))dtype默认情况下为int64,这可防止您插入浮点数。

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

x = np.array(range(1, 11), dtype=float)
Run Code Online (Sandbox Code Playgroud)

使用np.insert,您就可以使用dtype初始数组的限制(在引擎盖下创建的临时数组使用dtype输入的)。

有了np.append,但是,你实际使用np.concatenate,其创建与“最大”的数组dtype它的投入:在你的榜样,x然后转换为float


请注意,您可以简单地使用以下np.arange功能:

x = np.arange(1, 11, dtype=float)
Run Code Online (Sandbox Code Playgroud)