【问题标题】:Can't reshape my numpy array for training a KNN model无法重塑我的 numpy 数组来训练 KNN 模型
【发布时间】:2020-11-30 16:56:05
【问题描述】:

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

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

我试图像这样重塑数组:

    myarray.reshape(-1, 26)

但它导致了以下错误:

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

非常感谢

【问题讨论】:

  • 您能否提供一个完整的小示例并说明所需的输出
  • myarray 的具体类型是什么?也许它是object 类型的数组,而不是常规的二维数组?
  • 您确定每个内部元素都包含一个包含 26 个元素的一维数组吗?如果你得到(67,) 作为你的形状,这意味着它不是你预期的二维数组。
  • 试试np.stack(myarray)
  • myarray 是类型 object @MarijnvanVliet

标签: python-3.x numpy scikit-learn numpy-ndarray lbph-algorithm


【解决方案1】:

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

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 在 cmets 中指出的那样做:

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

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

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

【讨论】:

  • 是的!这正是我所需要的,非常感谢你,也感谢@hpaulj。祝你的项目好运!
猜你喜欢
  • 2018-12-11
  • 2019-03-13
  • 1970-01-01
  • 2013-12-13
  • 1970-01-01
  • 2022-06-26
  • 2020-08-29
  • 1970-01-01
相关资源
最近更新 更多