python - 如何访问数组列表列表中的 2D 数组并将它们转换为 3D 数组
问题描述
我读取图像数据集并列出数组列表:
img_all = [[img00, img01, ..., img0n], [img10, img11, ..., img1n], ..., [imgm0, imgm1, ..., imgmn]]
从这个列表中,我想获得 (img00, img10, ..., imgm0), (img01, img11, ..., imgm1), ..., (img0n, img1n, ..., imgmn) 的中值图像.
我可以使用 img_all[i][j] 访问 imgij 但是,如何访问 i 上的所有数组并将它们转换为 3D 数组,以便我可以通过 np.median() 获取它们的中值图像?np.array(img_all[:][j]) 没有返回我想要的。
请注意,imgij 是一个 numpy 2D 数组,图像的形状在 i 处的 j 处是相同的,即
img00, img10,...imgm0 是相同的形状。
img01, img11,...imgm1 是相同的形状。
...,
img0n, img1n,...imgmn 是相同的形状。
下面是我读取图像并想要获取中间图像的代码,但它不起作用,因为我无法根据需要访问数组列表中的数组。任何帮助,将不胜感激!
import numpy as np
def get_image(channel):
if channel == 0:
dim0 = 8
if channel == 1:
dim0 = 140
if channel == 2:
dim0 = 38
if channel == 3:
dim0 = 159
return np.random.rand(dim0, 10)
# Read data and make a list of lists of arrays
ndays = range(5)
channels = [0, 1, 2, 3]
img_all = []
for iday in ndays:
img_channel = []
for jth_channel in channels:
img = get_image(jth_channel)
img_channel.append(img)
img_all.append(img_channel)
# Get median arrays
medians = []
for j in channels:
imgs_channel_j = np.array(img_all[:][j]) ### I want to make an array of images for jth channel
print(imgs_channel_j.shape) # Here I thought I would get an array with the shape of (4, 8, 10) at j=0, (4, 140, 10) at j=1, .... but not.
img_median = np.median(imgs_channel_j, axis=0)
medians.append(img_median)
解决方案
推荐阅读
- python - 查找两个列表的每个元素之间的最大差异
- python-3.x - Moviepy:为视频添加音频
- javascript - 表单提交不遵循重定向(Node.js)
- javascript - 节点以编程方式需要快速路由
- api - Katalon - 基本身份验证 GET api 请求收到 401 错误
- r - 为什么html标签出现在我的html R Markdown文档中
- .net - NGEN 和 NGEN 关键计划任务有什么区别?
- azure - 我可以在本地保存 Azure VM 自定义映像吗?
- google-bigquery - 我们可以使用“创建一个新的 BigQuery 表作为触发运行预定义 BigQuery 查询的事件”吗?
- javascript - 简单文件上传不适用于 Vue.js 和 Flask 框架