使用`np.nan`填充嵌套的numpy数组时的奇怪行为

时间:2016-06-10 15:06:53

标签: python numpy

我有一个带有嵌套dtype的numpy数组:

dt = np.dtype([('e', '<f8'), ('n', '<i8'), ('pos', '<f8', (3,))])
arr = np.zeros(5, dtype=dt)

array([(0.0, 0, [0.0, 0.0, 0.0]), (0.0, 0, [0.0, 0.0, 0.0]),
       (0.0, 0, [0.0, 0.0, 0.0]), (0.0, 0, [0.0, 0.0, 0.0]),
       (0.0, 0, [0.0, 0.0, 0.0])],
      dtype=[('e', '<f8'), ('n', '<i8'), ('pos', '<f8', (3,))])

我试图用np.nan填充整个数组:

arr[:] = np.nan

但是,这不能按预期工作:

array([(nan, -9223372036854775808, [nan, nan, nan]),
       (nan, -9223372036854775808, [nan, nan, nan]),
       (nan, -9223372036854775808, [nan, nan, nan]),
       (nan, -9223372036854775808, [nan, nan, nan]),
       (nan, -9223372036854775808, [nan, nan, nan])],
      dtype=[('e', '<f8'), ('n', '<i8'), ('pos', '<f8', (3,))])

这里的第二栏显然是不是 nan

知道如何解决这个问题?

1 个答案:

答案 0 :(得分:3)

第二列不能。它有一个整数类型。整数没有纳米表示。

值-9223372036854775808是-2 ** 63,即最负64位有符号整数。