任务要求
任务描述
本关任务:假设你正在为一个数据分析团队编写一个小程序。用户将输入一系列数字,用空格分隔。你需要使用numpy库将这些数据存储在numpy数组中。接着,程序应该计算并输出以下内容:数组的平均值、数组的标准差、数组中的最大值和最小值。此外,你还需要展示数组的切片操作、堆叠操作以及拆分操作。
例子说明
测试输入:
1 2 3 4 5
预期输出:
平均值: 3.0
标准差: 1.4142135623730951
最大值: 5
最小值: 1
切片操作结果: [2 3 4]
垂直堆叠结果:
[[1 2 3]
[4 5 6]]
水平堆叠结果: [1 2 3 4 5 6]
水平拆分结果: [array([1]), array([2]), array([3])]
垂直拆分结果: [array([1, 2, 3]), array([4, 5, 6])]
相关知识
为了完成本关任务,你需要掌握:
- 如何使用numpy创建和操作数组
- 如何使用numpy进行基本的数学计算
- 如何进行数组的切片与索引
- 如何进行数组的堆叠
- 如何使用Numpy进行数组的拆分
1. 背景知识
- Numpy是Python的一个库,提供了大量的数学函数来操作这些数组。Numpy的核心功能是"ndarray",一个存储单一数据类型的多维数组。
2. numpy数组的创建
可以使用numpy的array函数从常规Python列表或元组中创建数组。得到的数组类型是从Python列表中元素的类型推导出来的。
import numpy as np
a = np.array([1,2,3])
print(a)
3. numpy的基本操作
- 使用shape查看数组的形状
- 使用dtype查看元素类型
import numpy as np
a = np.array([(1,2,3),(4,5,6)])
print(a.shape)
print(a.dtype)
4. numpy的数学计算
- 使用mean()计算平均值
- 使用std()计算标准差
- 使用max()和min()查找最大值和最小值
import numpy as np
a = np.array([1,2,3,4,5])
print(np.mean(a))
print(np.std(a))
print(np.max(a))
print(np.min(a))
5. numpy数组的切片与索引
可以使用切片来获取数组的一个子集。例如:
a = np.array([1,2,3,4,5])
print(a[1:4]) # 输出 [2 3 4]
6. numpy数组的堆叠
可以使用vstack和hstack函数来垂直或水平地堆叠两个数组。
a = np.array([1,2,3])
b = np.array([4,5,6])
print(np.vstack((a,b))) # 垂直堆叠
print(np.hstack((a,b))) # 水平堆叠
7. Numpy的拆分
可以使用array_split和vsplit函数来水平或垂直地拆分数组。
a = np.array([[1,2,3],[4,5,6]])
print(np.array_split(a,3)) # 水平拆分
print(np.vsplit(a,2)) # 垂直拆分
最终代码
import numpy as np
# 用户输入数据
data = input().split()
########input your code here#########
#转换为numpy数组
arr = np.array(data, dtype=int)
# 计算平均值
mean_val = np.mean(arr)
print(f"平均值: {mean_val}")
# 计算标准差
std_val = np.std(arr)
print(f"标准差: {std_val}")
#计算最大最小值并输出
max_val = np.max(arr)
min_val = np.min(arr)
print(f"最大值: {max_val}")
print(f"最小值: {min_val}")
# 切片操作
sliced_arr = arr[1:4]
print(f"切片操作结果: {sliced_arr}")
# 堆叠操作
vstacked_arr = np.vstack((arr, arr + 3))
hstacked_arr = np.hstack((arr, arr + 3))
print("垂直堆叠结果:")
print(vstacked_arr)
print(f"水平堆叠结果: {hstacked_arr}")
# 拆分操作
hsplitted_arr = np.array_split(arr,3)
vsplitted_arr = np.vsplit(vstacked_arr,2)
print("水平拆分结果:", hsplitted_arr)
print("垂直拆分结果:", vsplitted_arr)
########end of your code #########
易错细节
-
TypeError: _vhstack_dispatcher() takes 1 positional argument but 2 were given
对应问题及处理:少加括号,补加
vstacked_arr = np.vstack((arr, arr + 3))
hstacked_arr = np.hstack((arr, arr + 3))