【问题标题】:Adding arrays at run-time in 4d numpy array python在运行时在 4d numpy 数组 python 中添加数组
【发布时间】:2018-02-27 18:37:22
【问题描述】:

我正在尝试创建一个 3d numpy 数组的列表,我需要为其创建一个 4d numpy 数组,然后将子数组附加到它。我看到了这种创建空数组的方法:

numpy.empty(shape, dtype=float, order='C')

问题是,每个维度的3d数组的大小是不固定的。但是在制作4d numpy数组时,我必须定义形状和尺寸。

谁能提供一些有关如何实现此功能的信息。

感谢您的宝贵时间。

【问题讨论】:

  • "每个维度的 3d 数组的大小不固定。"你到底是什么意思?能举个例子吗?
  • 我认为他/她的意思是它是一个3D矩阵并且行数、列数和帧数不固定
  • 您可以使用 OpenCV。让我给你找一段代码来做到这一点。使用 numpy 以外的任何东西有什么问题吗?
  • @Saurabh 有很多方法可以做到这一点,例如skimage.transform.resize`
  • np.empty 不是空列表“[]”的克隆。这是“空”的完全不同的含义。不要将其用于此目的。没有固定维度的数组是不存在的。

标签: python arrays python-3.x numpy


【解决方案1】:

如果形状不同,则无法将 3D numpy 数组存储在一个 3D numpy 数组中。

您可以将其存储在一个简单的 python 列表或集合中。

但是,从您的 cmets 中找出问题。我认为您需要调整图像的大小。为此,您可以使用 OpenCV。 OpenCV 是 python 的库/包。

如果您选择使用 OpenCV,您可以这样做来调整图像大小。

import cv2
import numpy as np

number_of_images = 10000
target_size = [400, 400]

resized_images = np.empty([10000, 400, 400, 3])

for i, img in enumerate(all_images):
    resized_images[i] = cv2.resize(img, target_size)

resized_images 现在是一个包含所有图像的 4D numpy 数组。

【讨论】:

  • 请参考此链接:link
猜你喜欢
  • 2021-08-03
  • 1970-01-01
  • 1970-01-01
  • 2016-04-08
  • 2020-12-02
  • 1970-01-01
  • 1970-01-01
  • 2019-01-08
  • 1970-01-01
相关资源
最近更新 更多