【问题标题】:Numpy Array using Dtypes Throwing Error使用 Dtypes 抛出错误的 Numpy 数组
【发布时间】:2017-02-15 04:25:00
【问题描述】:

我正在做一些相当简单的事情,我正在尝试将列表列表转换为 np.array:

rows = [[1, 'None', 'None', 0, 0, 'None', 0, 0], 
        [2, 'None', 'None', 0, 0,    'None', 0, 0], 
        [3, 'None', 'None', 0, 0, 'None', 0, 0], 
        [4, 'None', 'None', 0, 0, 'None', 0, 0], 
        [5, 'None', 'None', 0, 0, 'None', 0, 0]]

dtypes = np.dtype(
    [
        ('_ID', np.int),
        ('SOURCE_LILST', '|S1024'),
        ('PRI_SOURCE', '|S256'),
        ('PRI_SOURCE_CNT', np.int32),
        ('PRI_SOURCE_PER', np.float64),
        ('SEC_SOURCE', '|S256'),
        ('SEC_SOURCE_CNT', np.int32),
        ('SEC_SOURCE_PER', np.float64)
    ]
)
array = np.array(rows, dtypes) # error raised

谁能看出是什么问题呢?

谢谢

【问题讨论】:

    标签: python numpy


    【解决方案1】:

    您的 rows 对象应该是元组列表,而不是列表列表:

    rows = [(1, 'None', 'None', 0, 0, 'None', 0, 0), 
            (2, 'None', 'None', 0, 0,    'None', 0, 0), 
            (3, 'None', 'None', 0, 0, 'None', 0, 0), 
            (4, 'None', 'None', 0, 0, 'None', 0, 0), 
            (5, 'None', 'None', 0, 0, 'None', 0, 0)]
    
    dtypes = np.dtype(
        [
            ('_ID', np.int),
            ('SOURCE_LILST', '|S1024'),
            ('PRI_SOURCE', '|S256'),
            ('PRI_SOURCE_CNT', np.int32),
            ('PRI_SOURCE_PER', np.float64),
            ('SEC_SOURCE', '|S256'),
            ('SEC_SOURCE_CNT', np.int32),
            ('SEC_SOURCE_PER', np.float64)
        ]
    )
    array = np.array(rows, dtypes) # no error raised
    

    一些额外的提示:

    1. 尽量简化您的问题,找出问题所在。在这种情况下,您可以删除除一列之外的所有列,因此删除dtypes,但仍然看到问题。这有助于消除可能的错误,例如您是否正确指定了所有这些字符串等。
    2. Google your problem 在麻烦创建问题之前。
    3. 当询问您为什么会收到错误时,请包含错误消息 - 或至少包含它的一些缩短版本。

    更一般地,阅读this。这不仅有助于提出更好的问题,而且还有助于在您开始提问之前找出问题。

    【讨论】:

      猜你喜欢
      • 2018-04-06
      • 1970-01-01
      • 1970-01-01
      • 2017-05-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-07-30
      • 2019-11-29
      相关资源
      最近更新 更多