📜  如何使用 savetxt() 和 loadtxt() 函数加载和保存 3D Numpy 数组到文件?(1)

📅  最后修改于: 2023-12-03 15:08:24.074000             🧑  作者: Mango

如何使用 savetxt() 和 loadtxt() 函数加载和保存 3D Numpy 数组到文件?

在数据科学的应用中,Numpy是一款广泛使用的Python库,用于高性能的数组计算。通过Numpy,你可以使用numpy.ndarray以多种各样的方式存储、操作、处理数组数据。在本文中,我们将介绍如何使用numpy的savetxt()和loadtxt()函数将3D数组保存到文件并从中加载。

使用 savetxt() 函数保存 3D Numpy 数组到文件
import numpy as np

# 生成一个3D数组,并填充一些随机整数
arr = np.random.randint(low=1, high=10, size=(2, 2, 2))

# 保存为CSV文件
np.savetxt('/path/to/file.csv', arr.reshape(-1, arr.shape[-1]), delimiter=',')

# 保存为txt文件
np.savetxt('/path/to/file.txt', arr.reshape(-1, arr.shape[-1]), delimiter='')

在上面的代码中,我们首先使用numpy.random.randint函数生成一个带有2个深度、2个高度和2个宽度的3D数组。然后我们使用.reshape方法将其转换为2D数组,并使用numpy.savetxt函数将其保存到文件中。savetxt函数需要指定文件路径、数组形状,并指定数组之间的分隔符(delimiter参数)。通过指定delimiter为逗号,我们可以将3D数组另存为CSV文件。如果不指定delimiter,则默认为以空格分隔,将数组作为文本文件保存。

使用 loadtxt() 函数从文件加载 3D Numpy 数组
# 从CSV文件加载3D数组
arr_csv = np.loadtxt('/path/to/file.csv', delimiter=',')

# 从txt文件加载3D数组
arr_txt = np.loadtxt('/path/to/file.txt')
# 使用np.reshape影响性能
arr_txt_reshaped = arr_txt.reshape(2, 2, 2)

在以上代码中,我们可以看到如何使用numpy.loadtxt函数从CSV或txt文本文件中加载3D数组。与savetxt()函数一样,loadtxt()函数需要指定文件路径,并指定分隔符。在加载CSV文件时,必须指定delimiter为逗号。而在加载文本文件时,分隔符默认为空格。

特别地,由于loadtxt函数只能自动推测2D数组的shape,因此加载文本文件时,如果出现ValueError: cannot reshape array of size X into shape (2,2,2)的情况,需要使用np.reshape方法主动将其reshape为正确的shape。

总的来说,savetxt()和loadtxt()是numpy中掌握的两个非常有用的函数,能够将3D数组保存为CSV或text文件,并能够从文件中加载3D数组。在这些函数的帮助下,数据分析人员能够更好地进行数据交互,分析和可视化。