【问题标题】:AttributeError: 'list' object has no attribute 'reshape' when using reshape for a listAttributeError: 'list' 对象在对列表使用 reshape 时没有属性 'reshape'
【发布时间】:2021-07-18 13:21:55
【问题描述】:

根据我的代码,我想读取帧并将它们转换为数组。之后使用 np.array 如下:

img = Image.open(os.path.join(source_folder, item))
        frames.append(item)
        x.append(np.asarray(img))
        w.append(np.array(x[i]))

当我运行波纹管时

w_train, w_test, y_train, y_test =train_test_split(w, y, test_size=0.2 ,shuffle=True, random_state=42)

w_train = w_train.reshape(2404,28,224,224,3)
w_test = w_test.reshape(601,28,224,224,3)

当我想使用 reshape 时,我面临 w_train 的这个错误:

AttributeError                            Traceback (most recent call last)
<ipython-input-6-809eb2542c50> in <module>
      
----> 9 w_train = w_train.reshape(2404,28,224,224,3)
     10 w_test = w_test.reshape(601,28,224,224,3)
     

AttributeError: 'list' object has no attribute 'reshape'

【问题讨论】:

  • np.array(w_train).reshape(2404, 28, 224, 224, 3) ?
  • w_train 的形状是 (67312,224,224,2)。我想将其重塑为(2404,28,224,224,3)。我该怎么办?

标签: python-3.x machine-learning reshape


【解决方案1】:

您可以将列表转换为 numpy 数组,然后使用 numpy.reshape 对其进行整形

import numpy as np

# Convert to numpy array
w_train = np.array(w_train)
w_test = np.array(w_train)

# Reshape
w_train = np.reshape(w_train, (2404,28,224,224,3))
w_test = np.reshape(w_test, (601,28,224,224,3))

【讨论】:

  • 现在可以使用。但是当我使用更多帧数时,例如 w_train.shape = (266448,224,224,3),当我使用 w_train = np.array(w_train) 时,我会遇到这个错误:ValueError: setting an array element with a sequence。如何解决大量帧的问题?
  • @mohamad 在w_train = np.array(w_train) 上没有发生错误。这发生在其他线路上,因此是另一个问题。用相关代码开始另一个问题。
【解决方案2】:

reshapenumpy 库下的一种方法,并且作为终端中打印的错误,对象 list 具有 no methode 定义为重塑

import numpy as np 
w_train=np.array(x_train)

那么您可以简单地使用 reshape 函数而不会出现任何错误:

w_train=x_train.reshape((2404,28,224,224,3))

您可以查看link 中的 reshape 特征以进一步了解该方法

【讨论】:

  • 现在可以使用。但是当我使用更多帧数时,例如 w_train.shape = (333060,224,224,3),当我使用 w_train = np.array(w_train) 时,我会遇到这个错误:ValueError: setting an array element with a sequence。如何解决大量帧的问题?
  • @mohamad 你能告诉我 w 的格式吗,因为问题可能是你试图从一个形状不像多的列表中创建一个数组维数组。
  • w.dtype 是“对象”。我不知道发生了什么
  • 一开始就检查 w_train 和 w_test 的形状,也许你正试图减少其中一个形状
猜你喜欢
  • 2021-07-15
  • 2017-07-03
  • 1970-01-01
  • 1970-01-01
  • 2020-05-25
  • 1970-01-01
  • 2023-04-09
  • 2014-09-08
  • 2016-01-30
相关资源
最近更新 更多