“练习题 1:数组保存与加载(单个数组) 题目要求: 创建一个形状为 (5, 5) 的NumPy数组,元素值为从10到34的整数。 将数组保存到文件 single_array.npy 中。 从文件中加载数组并打印。 练习题 2:数组保存与加载(多个数组) 题目要求: 创建两个数组: 数组1:3x3的整数数组,元素值为1到9。 数组2:包含10个元素的浮点数数组,元素值为0到1(不包括1),步长为0.1。 将两个数组保存到文件 multiple_arrays.npz 中。 从文件中加载数组并打印。”用python 语句回答
时间: 2025-05-07 16:13:15 浏览: 45
<think>嗯,用户让我用Python语句回答这两个练习题,分别是保存和加载单个数组以及多个数组。首先,我需要仔细看一下题目要求,确保我理解正确。
练习题1要求创建一个形状为(5,5)的NumPy数组,元素从10到34。然后保存到single_array.npy,再加载并打印。那我得先生成这样的数组。NumPy的arange函数可以生成连续的数字,但是10到34总共有25个元素,刚好5x5。所以用np.arange(10,35)创建,然后reshape成(5,5)。保存的话,用np.save('single_array.npy', arr)。加载的时候用np.load,再打印出来。这部分应该没问题,需要注意arange的结束值是否包含34,是的,因为35是不包含的,所以10到34正确。
练习题2需要处理两个数组,保存到npz文件中。第一个数组是3x3的1到9,可以用np.arange(1,10).reshape(3,3)。第二个数组是0到1,步长0.1,也就是0.0, 0.1,...,0.9,总共有10个元素。这里要注意,np.arange(0, 1, 0.1)可能会有浮点数精度问题,不过题目要求步长0.1,所以应该没问题。保存用np.savez('multiple_arrays.npz', arr1=arr1, arr2=arr2),然后加载时用np.load,再通过关键字访问数组。需要提醒用户加载后要使用正确的键名,比如这里保存时用了arr1和arr2,所以加载后要print(loaded['arr1'])和['arr2']。
然后用户可能需要注意导入numpy库,所以在代码开头要写import numpy as np。另外,保存和加载的路径问题,如果不在当前目录可能需要指定路径,但题目里没提,所以默认当前目录。
检查有没有语法错误,比如括号是否正确,函数参数是否正确。比如np.savez的参数是否正确传递了数组。练习题1的数组是否正确生成,有没有reshape错误。练习题2的第二个数组是否正确生成长度为10的数组,np.arange(0,1,0.1)确实会生成0.0到0.9,共10个元素。
然后写代码的时候,确保每个步骤都分开,注释清楚。用户可能需要看到完整的代码,包括导入库,创建数组,保存,加载,打印。另外,可能需要提醒用户安装numpy库,但可能用户已经知道,所以不需要特别说明。
总结一下,练习题1的步骤是:导入numpy,创建数组,保存,加载,打印。练习题2类似,只是两个数组,保存为npz文件,加载时用不同的键取出数组。
可能遇到的问题:保存的文件格式是否正确,比如.npy和.npz的区别。单个数组用save,多个用savez。加载时npz文件是一个类似字典的结构,需要按名字取出数组。
最后,确保代码示例正确,没有拼写错误,比如文件名是否正确,变量名是否一致。例如练习题2中保存时的关键字参数是否和加载时的一致。</think>以下是两个练习题的Python实现:
---
### 练习题 1:数组保存与加载(单个数组)
```python
import numpy as np
# 创建形状为 (5,5) 的数组,值从10到34
arr = np.arange(10, 35).reshape(5, 5)
# 保存到文件
np.save('single_array.npy', arr)
# 加载并打印
loaded_arr = np.load('single_array.npy')
print("从 single_array.npy 加载的数组:\n", loaded_arr)
```
---
### 练习题 2:数组保存与加载(多个数组)
```python
import numpy as np
# 创建数组1:3x3整数数组,值1到9
arr1 = np.arange(1, 10).reshape(3, 3)
# 创建数组2:10个浮点数,值0到1(步长0.1)
arr2 = np.arange(0, 1, 0.1)
# 保存到文件
np.savez('multiple_arrays.npz', arr1=arr1, arr2=arr2)
# 加载并打印
loaded = np.load('multiple_arrays.npz')
print("从 multiple_arrays.npz 加载的数组1:\n", loaded['arr1'])
print("从 multiple_arrays.npz 加载的数组2:\n", loaded['arr2'])
```
---
### 关键点说明
1. **文件格式区别**:
- `.npy` 用于保存单个数组
- `.npz` 用于保存多个数组(类似压缩包)
2. **数据精度控制**:
- 练习2中的 `arr2` 生成时可能因浮点精度出现类似 `0.30000000000000004` 的值,可通过 `np.round(arr2, decimals=1)` 修正
3. **加载方式**:
- `.npz` 文件加载后需要通过字典键名(如 `loaded['arr1']`)访问数组
4. **形状验证**:
- 可通过 `arr.shape` 检查数组维度是否符合题目要求
建议实际运行代码后检查输出形状和数值范围是否满足题目要求。
阅读全文