目标及要求:
1.大润发、沃尔玛、好德和农工商4个超市售卖苹果、梨、香蕉、橘子和芒果5种水果。使用 NumPy的 ndarray 实现以下功能。
(1)创建两个一维数组分别存储超市名称和水果名称。
(2)创建一个 4x5的二维数组存储不同超市的水果价格,其中价格(单位为元)由4~10 范围内的随机数生成。
(3)选择大润发的苹果和好德的香蕉,并将价格增加1元。
(4)农工商的水果大减价,将所有的水果价格减少2元。
(5)统计4个超市苹果和芒果的销售均价。
(6)找出橘子价格最贵的超市名称(不是编号)。
代码拆解:
1. 导入 NumPy 库
import numpy as np
在 Python 里,要使用 NumPy 库的功能,就得先把它导入。这里我们用 import numpy as np
把 NumPy 库导入,并且给它起了个简称 np
,这样后续使用时就更简便。
2. 创建超市和水果的一维数组
supermarkets = np.array(['大润发', '沃尔玛', '好德', '农工商'])
fruits = np.array(['苹果', '梨', '香蕉', '橘子', '芒果'])
这里借助 np.array()
函数分别创建了两个一维数组。supermarkets
数组存储了 4 个超市的名称,fruits
数组存储了 5 种水果的名称。这些数组在后续的操作中会作为数据的索引依据。
3. 生成 4x5 的价格矩阵
np.random.seed(2023) # 固定随机种子确保可复现
prices = np.round(np.random.uniform(4, 10, (4,5)), 2)
np.random.seed(2023)
:这行代码设定了随机数种子,其作用是保证每次运行代码时生成的随机数是一样的,这样就能让结果可复现。np.random.uniform(4, 10, (4,5))
:利用np.random.uniform()
函数生成一个 4 行 5 列的二维数组,数组里的元素是在 4 到 10 这个范围内的随机浮点数。这个二维数组就代表了不同超市的不同水果价格。np.round(..., 2)
:使用np.round()
函数把生成的随机数保留两位小数。
4. 对特定水果价格进行调整
prices[0, 0] += 1 # 大润发(索引0)苹果(索引0)
prices[2, 2] += 1 # 好德(索引2)香蕉(索引2)
在 NumPy 的二维数组里,第一个索引代表行,第二个索引代表列。prices[0, 0]
表示大润发的苹果价格,prices[2, 2]
表示好德的香蕉价格。通过 += 1
操作,把这两种水果的价格各增加了 1 元。
5. 农工商所有水果减价
prices[3] = np.round(prices[3] - 2, 2) # 整行操作
prices[3]
表示农工商对应的那一行数据,也就是农工商所有水果的价格。prices[3] - 2
把这一行的每个元素都减去 2,实现了农工商所有水果减价 2 元的操作。最后再用 np.round()
函数把结果保留两位小数。
6. 计算苹果和芒果的销售均价
apple_avg = np.round(prices[:,0].mean(), 2)
mango_avg = np.round(prices[:,-1].mean(), 2)
prices[:,0]
:选取了二维数组的第一列,也就是所有超市的苹果价格。prices[:,-1]
:选取了二维数组的最后一列,也就是所有超市的芒果价格。.mean()
:计算所选列的平均值。np.round(..., 2)
:把计算得到的平均值保留两位小数。
7. 查找橘子价格最贵的超市
orange_prices = prices[:,3] # 橘子列索引为3
max_supermarket = supermarkets[orange_prices.argmax()]
prices[:,3]
:选取了二维数组的第四列,也就是所有超市的橘子价格。orange_prices.argmax()
:找出orange_prices
数组中最大值的索引。supermarkets[orange_prices.argmax()]
:根据这个索引从supermarkets
数组中找出对应的超市名称。
8. 输出结果
print("=== 价格矩阵 ===")
print(prices)
print("\n=== 统计结果 ===")
print(f"苹果平均价: {apple_avg}元 芒果平均价: {mango_avg}元")
print(f"橘子最贵超市: {max_supermarket}")
通过 print()
函数把价格矩阵和统计结果输出到控制台,方便查看。
总结
这段代码运用了 NumPy 的 ndarray
来处理超市水果价格数据,涉及到数组的创建、随机数生成、数组元素的选取与修改、统计计算等操作。这些操作都是 NumPy 中非常基础且常用的功能,有助于熟悉 NumPy 的使用。
码字不易,如果看到这里了觉得ok的话,麻烦顺便点个赞呢,谢谢你!祝好。
import numpy as np
# (1) 创建超市和水果一维数组
supermarkets = np.array(['大润发', '沃尔玛', '好德', '农工商'])
fruits = np.array(['苹果', '梨', '香蕉', '橘子', '芒果'])
# (2) 生成4x5价格矩阵(4-10元,保留两位小数)
np.random.seed(2023) # 固定随机种子确保可复现
prices = np.round(np.random.uniform(4, 10, (4,5)), 2)
# (3) 大润发苹果+1,好德香蕉+1
prices[0, 0] += 1 # 大润发(索引0)苹果(索引0)
prices[2, 2] += 1 # 好德(索引2)香蕉(索引2)
# (4) 农工商所有水果-2元
prices[3] = np.round(prices[3] - 2, 2) # 整行操作
# (5) 计算苹果和芒果均价
apple_avg = np.round(prices[:,0].mean(), 2)
mango_avg = np.round(prices[:,-1].mean(), 2)
# (6) 查找橘子最贵超市
orange_prices = prices[:,3] # 橘子列索引为3
max_supermarket = supermarkets[orange_prices.argmax()]
# 输出结果
print("=== 价格矩阵 ===")
print(prices)
print("\n=== 统计结果 ===")
print(f"苹果平均价: {apple_avg}元 芒果平均价: {mango_avg}元")
print(f"橘子最贵超市: {max_supermarket}")