Python:numpy.insert NaN值

时间:2013-11-28 11:09:23

标签: python arrays numpy

我正在尝试将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 个答案:

答案 0 :(得分:4)

使用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,这会创建一个包含其输入“最大”dtype的数组:在您的示例中,x然后被投射到float


请注意,您只需使用np.arange功能:

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