Python 实战项目:NumPy_ndarray(后附完整代码与逐步拆解)

目标及要求:

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}")

练习使用python-numpy的方法——东北大学大数据班数据挖掘Python基础二(1) 实训项目:练习使用numpy的方法。 (1)用0~19的数字生成(4,5)的数组命名为a,查看a的维度;查看a的轴的个数;查看a元素的总个数; (2)创建元素为1,2,3,4的(2,2)的数组 b,查看b中元素类型。 (3)创建一个全1的(4,4)的数组c;创建一个内容随机的(3,2)数组d,并打印d。 (4)用0~11的数,创建一个3*4的数组n1,计算每一列的和;计算每一行的最小值。 (5)生成一个3个元素的数组n2,通过常用函数计算每个元素的平方根;每个元素的标准差。 (6)生成一个9个(可以从0~8)元素的数组n3,计算每个元素的平方根;取出位置2的元素;取出位置2至5之间的元素。 (7)随机生成2个3*3的数组n4和n5,将n4和n5进行垂直合并形成n6;将n4和n5进行水平合并形成n7。 (8)创建一个2行3列的零矩阵命名为z,将z的2行3列的位置值置成1。 (9)生成4*4的对角矩阵,以[1,2,3,4]为对角线,其他位置用0填充,命名为z1 。 (10)用0~8的数,创建成`3*3`的矩阵,命名为z2;用随机数,创建`4*4`的矩阵,命名为z3。 (11)读取iris数据集中的数据。 (12)获取数据中的花萼长度数据。 (13)对花萼长度数据进行排序。 (14)对花萼长度数据进行去重。 (15)对花萼长度数据进行求和。 (16)对花萼长度数据进行求均值。 (17)对花萼长度数据求累计和。 (18)对花萼长度数据求标准差。 (19)对花萼长度数据求方差 。 (20)对花萼长度数据求最大值、最小值。
【为什么要学习NumpyNumPyPython语言的一个扩展程序库。支持多维数组矩阵运算,此外也针对数组运算提供大量的数学函数库。Numpy是人工智能、数据分析从业者必备的知识和技能,也是学习后续Python扩展库(Matplotlib, SciPy, Pandas, Seaborn, Scikit-image等)的基础。【推荐你学习这门课的理由】(1)图文并茂:课程采用Jupyter Notebook讲解,图文并茂,讲述Numpy代码对应。其文件将分享给学员,可作为交互式电子书使用。(2)案例丰富: 每个知识点均有Numpy代码示例说明;难点使用图解说明和讲述。另提供Numpy项目实战案例-鸢尾花数据集上的数据分析计算。(3)内容全面系统:涵盖了Numpy的基础用法和高级用法,包括:ndarray、创建数组、复制数组、数组访问、数组运算、数组操作、迭代数组、maskedarray、结构化数组、通用函数、数学函数、统计函数、排序函数、条件查找、随机数、字节交换、线性代数、数据文件读写等。   玩转是一种境界,显示了对该领域有很大的兴趣,并非常了解和能娴熟使用。希望本课程能帮助大家玩转Numpy!【优惠说明】 课程正在优惠中! 备注:购课后可加入白勇老师课程学习交流QQ群:957519975【相关课程】《玩转Matplotlib数据绘图库》课程链接:https://edu.csdn.net/course/detail/28720 《Python编程的术道:Python语言入门》课程链接: https://edu.csdn.net/course/detail/27845  《Python编程的术道:Python语言进阶》课程链接: https://edu.csdn.net/course/detail/28618 【课程体系结构图】  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

做科研的周师兄

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值