填充结构化数组抛出" ndarray不是C-contiguous"错误

时间:2016-12-06 11:21:10

标签: python-3.x numpy structured-array

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

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数组。 但是,这行代码会引发上述错误。为什么呢?

1 个答案:

答案 0 :(得分:4)

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

    scores = np.empty(num_of_imgs,
        dtype=[('id', 'u4'), ('bestT', 'u8'), ('bestR', 'f8'), ('bestP', 'f8')])
    
  2. 然后你试图将一个列表分配给一个元组,它会抛出你的c连续错误(numpy对于转换结构化数组的类型和ndarrays没有帮助)。使作业成为元组。 (使用()代替[]

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