我正在尝试将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值?
答案 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)