关于 np.array 转换大小

about np.array convert size

我使用np.array转换列表,但大小不正确。 这是我的代码:

    svm = create_SVM()
    samples = np.array(train_data, dtype=np.float32)
    response = np.array(labels, dtype=np.int32)
    if samples.size != response.size:
        raise ValueError(
            f'sample.size != response.size!\nsample.size:{samples.size} response.size:{response.size} train_data:{len(train_data)}')
    print('train start...')
    svm.train(samples, cv.ml.ROW_SAMPLE, response)
    svm.save("svm.yml")

// another function
        img = cv.imread(path.join(filename, file), 0)
        img = cv.resize(img, (64, 128))
        hog = cv.HOGDescriptor()
        hist = hog.compute(img)
        data = np.array(hist, dtype=np.float32).reshape(1, -1)[0]
        train_data.append(data)
        labels.append(label)

结果是 ValueError: sample.size != response.size! sample.size:9552060 response.size:2527 train_data:2527
为什么 train_datasize 不等于 sample

您是在将苹果与橙子进行比较。您正在比较 samples.sizelen(train_data)。 numpy size 属性 returns 数组在所有维度上的总大小。 Python len 函数只会 return 第一维的大小。我猜 train_data 是一个 2527 x 3780 的数组。 len是2527,x.size是9552060.