python - 调整 numpy 或数据集大小的有效方法?

标签 python numpy h5py

我想了解 resize() 函数对 numpy 数组和 h5py 数据集 的影响。在我的应用程序中,我逐行读取文本文件,然后在解析数据后写入 hdf5 文件。什么是实现这个的好方法。我是否应该将每个新行添加到 numpy 数组中并继续为 numpy 数组 调整 (增加轴) 的大小 (最终将完整的 numpy 数组写入 h5py 数据集) 或者我应该直接将每个新行数据添加到 h5py 数据集 中,从而调整内存中 h5py 数据集 的大小。如果我们在每一行之后继续调整大小,resize() 函数如何影响性能?或者我应该在每 100 或 1000 行后调整大小?

每个数据集中大约有 200,000 行。

感谢任何帮助。

最佳答案

我认为 resize() 会复制数组中的所有数据,如果重复调用它会很慢。

如果想连续向数组追加数据,可以先创建一个大数组,然后使用索引将数据复制进去。

或者您可以使用数组模块中的数组对象,它是一个行为类似于列表的动态数组。将所有数据附加到数组对象后,您可以将其转换为 ndarray。这是一个例子:

import array
import numpy as np
a = array.array("d")
a.extend([0,1,2])
a.extend([3,4,5])
b = np.frombuffer(a, np.float).reshape(-1, 3)

关于python - 调整 numpy 或数据集大小的有效方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11979316/

相关文章:

python - 如何从 MySQL 日期时间转换为 numpy datetime64?

python - 通过 h5py (HDF5) 写入具有可变长度字符串的复合数据集

python - 使用 h5py 随机读取大型 numpy 矩阵的多行的快速方法

python - 使用 h5py 访问数据范围

python - __subclasses__ 方法是如何在 CPython 中实现的?

python - Numpy 比例 3D 阵列

python - 在 python 中通过 shell 管道接收参数?

python - 将数组归一化为总和为 1.0 的两种方法

python - 当Python tabula-py表格中有换行符时,如何读取pdf中的表格?

python - 将 pandas DataFrame 写入包含一些空行的 csv 文件