【问题标题】:How to deal with this when I use numpy.array() to deal with 'list'?当我使用 numpy.array() 处理 'list' 时如何处理?
【发布时间】:2018-07-27 03:04:31
【问题描述】:
import cv2
import numpy

list_pixel=[]
list_label=[]
for i in range(0,10):
    for j in range(0,10):
        list_pixel.append(cv2.imread("C:\\Users\\kimcho\\Desktop\\testdata\\testdata_"+str(i)+"_0"+str(j)+".png",0))
        list_label.append(i)
    j=0
list_pixel.pop(0)
list_label.pop(0)
list_pixel=numpy.array(list_pixel)
print(list_pixel)
print(list_pixel.shape)
print(list_pixel[0].shape)

当我使用numpy.array()处理'list'时如何处理?我想通过模仿keras来制作数据集。但是,我制作的数据集并不满足我。我希望它像keras一样,返回这样的值:

它可以返回一个值(60000,28,28)

但是对于我的数据集,它只能这样返回:

只返回一个值(99,)——我有99张图片,我想把它们的像素加载到list_pixel中

这是我的代码:

希望有人能帮我解决这个问题。非常感谢!!!

【问题讨论】:

  • 请您在这里输入您的代码,而不是截图?
  • 对不起,这是我第一次使用stackoverflow。我不知道你如何像代码格式一样编辑它以在屏幕上显示它
  • import cv2 import numpy list_pixel=[] list_label=[] for i in range(0,10): for j in range(0,10): list_pixel.append(cv2.imread("C :\\Users\\kimcho\\Desktop\\testdata\\testdata_"+str(i)+"_0"+str(j)+".png",0)) list_label.append(i) j=0 list_pixel .pop(0) list_label.pop(0) numpy.array(list_pixel) print(list_pixel) print(list_pixel.shape) print(list_pixel[0].shape)
  • 请将您的代码放在问题中,而不是在评论中。这种方式真的很难读。
  • 对不起,先生。没关系。谢谢

标签: python numpy numpy-ndarray


【解决方案1】:

使用 cv2.imread 时,您已经将图像加载为 numpy 数组。

一个简单的方法如下:

import cv2
import numpy as np

list_label = np.arange(0, 10)
path = "C:\\Users\\kimcho\\Desktop\\testdata\\testdata_{0}_0{1}.png"
list_pixel = np.array([
    cv2.imread(path.format(i, j), 0) for i in range(0, 10)
    for j in range(0, 10)
])

让我们在一个简单的场景中尝试一下:我们假设只有一个 28x28 大小的图像,比如这个:

假设它在路径my/path/image.png中。

import cv2
import numpy as np

list_label = np.arange(0, 10)
path = "my/path/image.png"
list_pixel = np.array([
    cv2.imread(path,0) for i in range(0, 10)
    for j in range(0, 10)
])

当运行list_pixel.shape 时,你会得到(100, 28, 28)

【讨论】:

  • 对不起,先生。当我使用你的方法并使用“print(list_pixel.shape)”时,它只显示它的形状是(100,),这仍然不能满足我的需要。我希望它像(100,28,28)和我不知道如何做到这一点。所以,你还有其他想法吗?
  • 我添加了一个工作示例。你确定你所有的图片都是 28x28 的吗?通常,矩阵中的 (x,) 等形状是由行中的不同大小引起的,因此它们被视为列表而不是矩阵。
  • 所有图片均为 28x28。但是图片的数字不正确,导致了这个错误。谢谢你的帮助。
  • 如果此答案解决了您的问题,您应该考虑将其标记为已接受。此外,您应该考虑清理并重新格式化您的问题,以明确您所面临的问题并寻求帮助,删除图片。
猜你喜欢
  • 2012-07-24
  • 2020-02-26
  • 1970-01-01
  • 2011-03-29
  • 2021-03-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多