【问题标题】:Numpy.array dtype assignment failureNumpy.array dtype 分配失败
【发布时间】:2021-08-04 03:08:10
【问题描述】:

我对 numpy 完全陌生,正在尝试创建结构化数组。我的输入如下:

data = [2, 0, '1431.033', '436.7573', '170.9705', 0, '', 0]
dt = [('ID', 'int'),
      ('CP', 'int'),
      ('X1', 'float'),
      ('X2', 'float'),
      ('X3', 'float'),
      ('CD', 'int'),
      ('PS', 'str'),
      ('SEID', 'int')]

当我尝试使用 np.array(data, dtypes=dt) 创建数组时,我收到错误 {ValueError}invalid literal for int() with base 10: '1431.033'

我在这里做错了什么?

【问题讨论】:

  • 恐怕numpy数组一般不能包含不同的数据类型。
  • @NiveshGadipudi,结构化数组的示例显示了这一点。 numpy.org/doc/stable/user/basics.rec.html#structured-arrays
  • data 必须是元组或元组列表。你的是一个列表。
  • 来自您的文档页面:numpy.org/doc/stable/user/…
  • @josiaLund 来自您发布的链接中的示例,它是一个元组数组,正如其他 stackoverflow 用户所述,这是可能的,但您使用的方式不是。

标签: python arrays numpy dtype


【解决方案1】:

来自documentation,将值分配给结构化数组的最简单方法是使用 python 原生元组。通过将我的数据组织为列表中的元组,可以成功创建结构化数组。

data = [(2, 0, '1431.033', '436.7573', '170.9705', 0, '', 0)]
dt = [('ID', 'int'),
      ('CP', 'int'),
      ('X1', 'float'),
      ('X2', 'float'),
      ('X3', 'float'),
      ('CD', 'int'),
      ('PS', 'str'),
      ('SEID', 'int')]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-11-28
    • 2021-06-01
    • 1970-01-01
    • 2021-03-10
    • 2017-06-29
    • 1970-01-01
    • 1970-01-01
    • 2021-11-26
    相关资源
    最近更新 更多