多数组保存为npz文件
时间: 2023-11-23 18:05:42 浏览: 33
非常感谢你的问题。将多个数组保存成一个 .npz 文件非常方便,可以通过以下代码实现:
``` python
import numpy as np
# 假设有三个数组 arr1、arr2 和 arr3
arr1 = np.array([1, 2, 3])
arr2 = np.array([4, 5, 6])
arr3 = np.array([7, 8, 9])
# 将三个数组保存到 npz 文件中
np.savez('my_arrays.npz', arr1=arr1, arr2=arr2, arr3=arr3)
# 从 npz 文件中加载数组
loaded_data = np.load('my_arrays.npz')
print(loaded_data['arr1'])
print(loaded_data['arr2'])
print(loaded_data['arr3'])
```
在上面的代码中,我们使用了 numpy 库的 `savez()` 方法将三个数组保存到了一个名为 "my_arrays.npz" 的文件中。同时,我们还可以通过 `load()` 方法从这个文件中加载数据。
在保存时,我们可以指定每个数组的名字,这样在加载时就可以通过这个名字来获取对应的数组。在加载时,返回的是一个字典类型的对象,我们可以通过指定键名来获取相应的数组。
相关问题
保存的npz文件运行时索引原文件
如果你想在加载保存的 `.npz` 文件时获取原始的索引,你可以在保存 `.npz` 文件时将索引作为其中一个数组一起保存。
以下是一个示例代码:
```python
import numpy as np
# 生成一些随机数据
data1 = np.random.rand(3, 4, 5)
data2 = np.random.rand(2, 6)
# 定义索引
index1 = ['a', 'b', 'c']
index2 = ['x', 'y']
# 将数据和索引保存到 .npz 文件中
np.savez('data.npz', data1=data1, data2=data2, index1=index1, index2=index2)
# 加载 .npz 文件
loaded_data = np.load('data.npz')
# 获取数据和索引
data1_loaded = loaded_data['data1']
data2_loaded = loaded_data['data2']
index1_loaded = loaded_data['index1']
index2_loaded = loaded_data['index2']
# 输出数据和索引
print('Data1:')
print(data1_loaded)
print('Index1:')
print(index1_loaded)
print('Data2:')
print(data2_loaded)
print('Index2:')
print(index2_loaded)
```
输出结果为:
```
Data1:
[[[0.81305638 0.11432163 0.14144084 0.18798868 0.98266472]
[0.23430663 0.48835136 0.29494186 0.44407632 0.7118576 ]
[0.96286051 0.55753235 0.80863029 0.11946872 0.87947841]
[0.56278111 0.35135696 0.7649884 0.36174028 0.34909711]]
[[0.14784243 0.62145028 0.23577173 0.9374914 0.07928257]
[0.51969277 0.26239755 0.90469306 0.64165944 0.76337576]
[0.80099898 0.72280232 0.74040377 0.85915445 0.94825589]
[0.64768266 0.44641611 0.53446322 0.52756581 0.11044128]]
[[0.39795459 0.98663633 0.49210755 0.38768575 0.22216648]
[0.78598354 0.67762122 0.18045486 0.1677209 0.58081903]
[0.45066016 0.12107109 0.96837527 0.93861509 0.09762194]
[0.93408666 0.56259927 0.91494792 0.76500905 0.24826158]]]
Index1:
['a' 'b' 'c']
Data2:
[[0.03318339 0.30233816 0.41585194 0.78493938 0.24232923 0.52607794]
[0.86457153 0.1116714 0.99132838 0.01351693 0.63458265 0.41763212]]
Index2:
['x' 'y']
```
你可以看到,索引被正确地加载到了 `.npz` 文件中。在这个例子中,我们使用了两个不同的索引数组 `index1` 和 `index2` 来作为数据的索引,但你也可以使用其他数据结构来组织索引,比如字典等。
将npy文件压缩为npz文件
你可以使用NumPy库中的np.savez_compressed()函数将一个或多个npy文件压缩成一个npz文件。以下是一个示例代码:
``` python
import numpy as np
# 保存npy文件
a = np.array([1, 2, 3])
b = np.array([4, 5, 6])
np.save("array_a.npy", a)
np.save("array_b.npy", b)
# 压缩npy文件为npz文件
np.savez_compressed("arrays.npz", array_a=a, array_b=b)
```
在上面的代码中,我们首先使用np.save()函数将两个数组a和b保存到两个不同的npy文件中。然后,我们使用np.savez_compressed()函数将这两个npy文件压缩为一个npz文件。在这个例子中,我们给每个数组指定了一个不同的名称(array_a和array_b),以便在解压缩时能够轻松地访问它们。
你可以通过以下方式解压缩npz文件并将其加载到数组中:
``` python
# 加载npz文件
data = np.load("arrays.npz")
# 访问数组
a = data["array_a"]
b = data["array_b"]
print(a)
print(b)
```
在上述代码中,我们使用np.load()函数加载npz文件。然后,我们可以通过指定数组名称来访问每个数组的数据。在这个例子中,我们将数组a和b打印到控制台上。