【问题标题】:Weird behaviour when filling a nested numpy array with `np.nan` [duplicate]用`np.nan`填充嵌套的numpy数组时的奇怪行为[重复]
【发布时间】:2016-06-10 23:15:48
【问题描述】:

我有一个带有嵌套 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

知道如何解决这个问题吗?

【问题讨论】:

  • 好吧,dtypei8NaN 不能用 int dtype 表示,所以看起来所发生的只是它被设置为某个统一的值

标签: python numpy


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-12-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多