python - 将大型 Numpy 数组切片成单独的数组
问题描述
我有一个 (30000, 25, 25) 维度的 hdf 文件,并且已经使用以下代码将其转换为 numpy 数组:
import numpy as np
import h5py
hf = h5py.File('data.h5', 'r')
n1 = np.array(hf["image"][:])
x = n1[0:625:30000]
print(x)
在 hdfview 中,更改其尺寸后,我能够创建 30000 个单独的 25 X 25 数组。但是,使用上面的代码,我只能打开第一个数组。下面的代码能够显示第一个数组:
import numpy as np
import h5py
hf = h5py.File('data.h5', 'r')
n1 = np.array(hf["image"][:])
x[0] = n1[0:625:30000]
print(x)
当我更改x[0]
为x[1]
或更高时,它会显示 - “索引 1 超出轴 0 的范围,大小为 1。” 在 hdfview 中演示的这些 25 X 25 阵列中输出 30000 个的解决方案有吗?
解决方案
n1 = hf["image"][:]
足够的。它是一个 numpy 数组。无需np.array(...)
再次包裹它。
x = n1[0:625:30000]
没有意义。在 Python 中,切片是[start:stop:step]
.
x = n1[::625]
将返回一个子集,即第 625 个元素(在第一个维度上)。
'x = n1[0] is the first (25,25) block (or image).
x = n1[1]` 第二个。
在numpy
索引n1[0]
中相当于n1[0, :, :]
, 在第一个维度上选择一个项目。
我有一种感觉,你已经开始处理这些图像(用于机器学习或类似的东西),而没有学习太多python
或numpy
. 如果您只是按照可能有效的教程进行操作,但如果您偏离了该引导路径,您将迷失方向。
与您的第一篇文章同时发布的另h5py
一篇 SO 帖子是相关的:
推荐阅读
- java - 使用模块时出现 Javadoc 错误 - 发现太多模块声明
- c# - Microsoft OData 无法在 $filter (v7) 中仅使用日期
- mongodb - mongodb聚合查找返回集合中的每个项目
- delphi - 如何在 TForm 的边界之外显示控件(例如 TListbox)
- node.js - 如何在同一终端中的正在进行的任务之后运行 npm 任务
- .net-core - 是否可以发布 dotnetcore WebApi 服务的服务合同?
- vba - 如果阻塞,如何简化复杂的 4k 行?
- ruby - 列出所有 Ruby 类和方法
- php - PHP字符串到JSON错误
- javascript - 淡出淡入卡片元素