Python 练习题<2>

54 阅读4分钟

任务背景:有一个包含不同地区、不同月份的销售额数据的二维数组。

使用 NumPy 提供的函数max/min/ptp/median以及argmax/argmin对这些数据进行统计分析,帮助卖家更好地理解销售趋势。

任务要求:

1、生成一个 4x6 的随机销售数据数组,表示 4 个地区在过去 6 个月的销售额(随机数值可以在 100 到 1000 之间)。

import numpy as np

arr = np.random.randint(10, 1000, (4, 6))

2、分别计算每个地区的最高销售额、最低销售额以及销售额的差值(峰值到峰值范围)。

3、找出每个地区销售额的中位数,并指出在哪个月份达到了最大值和最小值。

4、计算哪个地区在某个月份的销售额最高和最低,每个月份哪个地区的销售额最高和最低。

import numpy as np
# 1. 生成 4x6 的随机销售额数据数组
arr4 = np.random.randint(100, 1000, (4, 6))
print("销售额数据数组:")
print(arr4)
# 2. 计算每个地区的最高销售额(按行求最大值)
region_max = np.max(arr4, axis=1)
# 计算每个地区的最低销售额(按行求最小值)
region_min = np.min(arr4, axis=1)
# 计算每个地区销售额的差值(最大值减最小值)
region_ptp = np.ptp(arr4, axis=1)
print("\n每个地区的最高销售额:")
print(region_max)
print("每个地区的最低销售额:")
print(region_min)
print("每个地区销售额的差值:")
print(region_ptp)
# 3. 计算每个地区销售额的中位数(按行求中位数)
region_median = np.median(arr4, axis=1)
# 找出每个地区销售额最大值所在的月份(列索引)
max_month = np.argmax(arr4, axis=1)
# 找出每个地区销售额最小值所在的月份(列索引)
min_month = np.argmin(arr4, axis=1)
print("\n每个地区销售额的中位数:")
print(region_median)
print("每个地区销售额最大值所在月份:")
print(max_month)
print("每个地区销售额最小值所在月份:")
print(min_month)
# 4. 找出哪个地区在某个月份(这里以第 0 个月份为例)的销售额最高
region_in_month_max = np.argmax(arr4[:, 0])
# 找出哪个地区在第 0 个月份的销售额最低
region_in_month_min = np.argmin(arr4[:, 0])
print(f"\n第 0 个月份销售额最高的地区:{region_in_month_max}")
print(f"第 0 个月份销售额最低的地区:{region_in_month_min}")
# 找出每个月份销售额最高的地区
month_region_max = np.argmax(arr4, axis=0)
# 找出每个月份销售额最低的地区
month_region_min = np.argmin(arr4, axis=0)
print("每个月份销售额最高的地区:")
print(month_region_max)
print("每个月份销售额最低的地区:")
print(month_region_min)

任务背景:背景:使用 NumPy 提供的sort()、view()和copy()函数对销售数据进行基本操作。

任务要求:

1、使用 NumPy 创建一个 4x3 的随机整数数组,模拟一个季度内四个地区每个月的销售额(单位:千元),数值范围在 10 到 100 之间,并打印输出。

import numpy as np

arr = np.random.randint(10, 100, (4, 3), dtype=np.int64)

2、使用 numpy.sort() 方法对销售数据进行排序:

  • 按行排序,打印每个地区的销售额从低到高的排序结果。

  • 按列排序,打印每个月的销售额从低到高的排序结果。

3、使用 view() 方法创建销售数据数组的视图,并将视图中第2个地区第3个月的销售额更改为 999。打印视图和原数组,观察修改的影响。

4、使用 copy() 方法创建销售数据数组的副本,打印副本并将副本中第2个地区第3个月的销售额更改为 888。打印视图和原数组,观察修改的影响。

import numpy as np
# 1. 创建 4x3 的随机整数数组
arr5 = np.random.randint(10, 100, (4, 3), dtype=np.int64)
print("原始数组:")
print(arr5)
# 2. 按行排序(每个地区的销售额从低到高)
row_sorted = np.sort(arr5, axis=1)
print("\n按行排序后的数组(每个地区销售额从低到高):")
print(row_sorted)
# 按列排序(每个月的销售额从低到高)
col_sorted = np.sort(arr5, axis=0)
print("按列排序后的数组(每个月销售额从低到高):")
print(col_sorted)
# 3. 使用 view() 创建视图并修改
arr5_view = arr5.view()
arr5_view[1, 2] = 999
# 修改视图中第2个地区(索引1)第3个月(索引2)的销售额为999
print("\n视图:")
print(arr5_view)
print("原数组(视图修改会影响原数组):")
print(arr5)
# 4. 使用 copy() 创建副本并修改
arr5_copy = arr5.copy()
arr5_copy[1, 2] = 888
# 修改副本中第2个地区(索引1)第3个月(索引2)的销售额为888
print("\n副本:")
print(arr5_copy)
print("原数组(副本修改不影响原数组):")
print(arr5)