0

我正在使用以这种方式定义的结构化数组:

scores = np.empty((num_of_imgs, 4),
                               dtype=[('id', 'u4'), ('bestT', 'u8'), ('bestR', 'f8'), ('bestP', 'f8')])

然后在 for 循环中填充它:

scores[i] = [id, bestT, bestR, bestP]

其中列表中的所有变量都是形状为 (1,) 的 numpy 数组。但是,这行代码会引发上述错误。为什么?

4

1 回答 1

4
  1. 你的scores任务是制作一个 nx4 4 元组数组,我认为这是一个比你想要的更大的维度。它应该是

    scores = np.empty(num_of_imgs,
        dtype=[('id', 'u4'), ('bestT', 'u8'), ('bestR', 'f8'), ('bestP', 'f8')])
    
  2. 然后,您尝试将列表分配给元组,这会引发 c-contiguous 错误(numpy 在转换结构化数组的类型方面不如 ndarrays 有用)。使分配成为一个元组。(使用()代替[]

    scores[i] = (id, bestT, bestR, bestP)
    
于 2016-12-06T11:59:19.110 回答