python&numpy十五: 关于numpy的基础练习

下面是一些较为复杂的NumPy练习题及其答案:

题目:

1.创建一个形状为(5, 5)的二维数组,其中每个元素的值等于其行索引加上其列索引的和。

2.创建一个大小为10的随机数组,并找到其中前三个最大值的索引。

3.创建一个大小为10的随机数组,并将其中所有大于0.5的元素替换为1,其余元素替换为0。

4.给定一个一维数组,找出所有连续重复的元素,并将它们替换为0。

答案:

练习1:

创建一个形状为(5, 5)的二维数组,其中每个元素的值等于其行索引加上其列索引的和。

复制代码
import numpy as np

arr = np.fromfunction(lambda i, j: i + j, (5, 5), dtype=int)

print(arr)

输出结果:

复制代码
[[0 1 2 3 4]
 [1 2 3 4 5]
 [2 3 4 5 6]
 [3 4 5 6 7]
 [4 5 6 7 8]]

练习2:

创建一个大小为10的随机数组,并找到其中前三个最大值的索引。

复制代码
import numpy as np

arr = np.random.rand(10)
indices = np.argsort(arr)[-3:]

print("Array:", arr)
print("Indices of top 3 max values:", indices)

输出结果类似:

复制代码
Array: [0.69663739 0.33775502 0.75378663 0.57768405 0.28549115 0.43134244
 0.55627119 0.49357289 0.21644175 0.73342044]
Indices of top 3 max values: [2 9 0]

练习3:

创建一个大小为10的随机数组,并将其中所有大于0.5的元素替换为1,其余元素替换为0。

复制代码
import numpy as np

arr = np.random.rand(10)
arr[arr > 0.5] = 1
arr[arr <= 0.5] = 0

print(arr)

输出结果类似:

复制代码
[0. 0. 0. 0. 0. 1. 1. 1. 1. 1.]

练习4:

给定一个一维数组,找出所有连续重复的元素,并将它们替换为0。

复制代码
import numpy as np

arr = np.array([1, 2, 2, 3, 4, 4, 4, 5, 6, 6, 7])
mask = np.concatenate(([False], arr[1:] == arr[:-1]))
arr[mask] = 0

print(arr)

输出结果:[1 2 0 3 4 0 0 5 6 0 7]

这些练习题考验了对NumPy数组操作和高级函数的理解。通过完成这些练习,可以提升对NumPy的熟练度,并巩固对其功能和特性的理解。

相关推荐
悟空爬虫1 小时前
UV实战教程,我啥要从Anaconda切换到uv来管理包?
python
dev派2 小时前
AI Agent 系统中的常用 Workflow 模式(1)
python·langchain
明月_清风3 小时前
从“能用”到“专业”:构建生产级装饰器与三层逻辑拆解
后端·python
曲幽13 小时前
数据库实战:FastAPI + SQLAlchemy 2.0 + Alembic 从零搭建,踩坑实录
python·fastapi·web·sqlalchemy·db·asyncio·alembic
用户83562907805117 小时前
Python 实现 PowerPoint 形状动画设置
后端·python
ponponon19 小时前
时代的眼泪,nameko 和 eventlet 停止维护后的项目自救,升级和替代之路
python
Flittly19 小时前
【从零手写 ClaudeCode:learn-claude-code 项目实战笔记】(5)Skills (技能加载)
python·agent
敏编程19 小时前
一天一个Python库:pyarrow - 大规模数据处理的利器
python
Flittly21 小时前
【从零手写 ClaudeCode:learn-claude-code 项目实战笔记】(4)Subagents (子智能体)
python·agent
明月_清风1 天前
Python 装饰器前传:如果不懂“闭包”,你只是在复刻代码
后端·python