首页 > 解决方案 > 无法重塑我的 numpy 数组来训练 KNN 模型

问题描述

我尝试使用局部二进制模式 (LBP) 描述符来训练 KNN 模型。

我的数据是一个numpy.array形状为 (67, 26) 的元素,但myaray.shape返回(67, )

我试图重塑数组,如:

    myarray.reshape(-1, 26)

但它导致了以下错误:

ValueError: cannot reshape array of size 67 into shape (26)**

非常感谢

标签: python-3.xnumpyscikit-learnnumpy-ndarraylbph-algorithm

解决方案


由于我不确定我是否清楚地理解了您的问题,首先我将尝试模拟您的数据:

In [101]: import numpy as np

In [102]: myarray = np.empty(shape=67, dtype=object)

In [103]: for i in range(len(myarray)):
     ...:     myarray[i] = np.random.rand(26)

请运行以下代码:

In [104]: type(myarray)
Out[104]: numpy.ndarray

In [105]: myarray.shape
Out[105]: (67,)

In [106]: myarray.dtype
Out[106]: dtype('O')

In [107]: type(myarray[0])
Out[107]: numpy.ndarray

In [108]: myarray[0].shape
Out[108]: (26,)

如果您得到与上述相同的结果,numpy.stack则应按照@hpaulj 在评论中指出的技巧进行操作:

In [109]: x = np.stack(myarray)

In [110]: type(x)
Out[110]: numpy.ndarray

In [111]: x.shape
Out[111]: (67, 26)

推荐阅读