numpy经典练习
时间: 2025-07-23 15:36:14 浏览: 8
<think>我们被要求提供numpy经典练习题及答案。根据引用内容,我们有一些练习题示例,但需要整理出经典练习题。注意:引用中给出了几道练习题(83题、55题、12题、25题等),我们可以从中选取一些经典的,并补充其他经典题目。经典练习题通常包括:1.数组创建2.数组操作(索引、切片、形状变换)3.数学运算4.统计函数5.线性代数6.随机数生成7.文件输入输出我们将从引用中选取几道,并补充一些其他经典题目。注意:答案要使用中文,并且按照要求使用LaTeX格式的数学表达式。我们选择以下10道经典练习题:1.创建一个长度为10的一维全零数组,并把第五个元素赋值为1。2.创建一个3x3的二维数组,元素为从1到9。3.如何找到数组中出现频率最高的值?(引用[1]的83题)4.对于numpy数组,有什么等同于enumerate的函数?(引用[2]的55题)5.从数组np.arange(15)中提取5到10之间的所有数字。(引用[3]的12题)6.去除掉一个数组中所有元素都相同的数据(引用[4]的25题,但原题是去除行,我们稍作调整)7.计算两个数组的点积(内积)。8.生成一个5x5的随机数组,并找到最大值和最小值的位置。9.将数组中的负数替换为0。10.计算数组的均值、标准差、方差。我们将逐一给出题目和答案,答案使用代码块(如果是代码)或LaTeX(如果是数学公式)表示。注意:引用标识要自然地添加在引用内容的末尾。开始编写:</think>### NumPy 经典练习题及答案
以下是 NumPy 的经典练习题及详细解答,涵盖数组操作、数学运算、统计函数等核心功能:
#### 1. 创建全零数组并修改元素
**题目**:创建长度为 10 的全零数组,将第五个元素(索引 4)改为 1。
**答案**:
```python
import numpy as np
arr = np.zeros(10)
arr[4] = 1
print(arr) # 输出: [0. 0. 0. 0. 1. 0. 0. 0. 0. 0.]
```
#### 2. 提取特定范围的元素
**题目**:从 `np.arange(15)` 中提取所有 5 到 10 之间的数字(包含边界)[^3]。
**答案**:
```python
arr = np.arange(15)
result = arr[(arr >= 5) & (arr <= 10)]
print(result) # 输出: [ 5 6 7 8 9 10]
```
#### 3. 查找频率最高的值
**题目**:找出数组 `[1, 2, 3, 4, 5, 1, 2, 1, 1, 2, 2, 2, 3]` 中出现频率最高的值[^1]。
**答案**:
```python
arr = np.array([1, 2, 3, 4, 5, 1, 2, 1, 1, 2, 2, 2, 3])
values, counts = np.unique(arr, return_counts=True)
most_frequent = values[np.argmax(counts)]
print("出现频率最高的值:", most_frequent) # 输出: 2
```
#### 4. 数组的枚举遍历
**题目**:对二维数组 `[[1,2], [3,4]]` 实现类似 Python `enumerate` 的遍历(输出索引和值)[^2]。
**答案**:
```python
arr = np.array([[1, 2], [3, 4]])
for index, value in np.ndenumerate(arr):
print(index, value)
# 输出:
# (0,0) 1
# (0,1) 2
# (1,0) 3
# (1,1) 4
```
#### 5. 过滤重复行
**题目**:去除二维数组中所有元素完全相同的行(如 `[[1,1], [2,3]]` 中删除 `[1,1]`)[^4]。
**答案**:
```python
z = np.array([[1, 1], [2, 3], [4, 4]])
# 检查每行元素是否全部相同
mask = ~np.all(z[:, 1:] == z[:, :-1], axis=1)
result = z[mask]
print(result) # 输出: [[2 3]]
```
#### 6. 矩阵乘法
**题目**:计算 $2 \times 3$ 矩阵与 $3 \times 2$ 矩阵的点积。
**答案**:
```python
a = np.array([[1, 2, 3], [4, 5, 6]]) # 2x3
b = np.array([[7, 8], [9, 10], [11, 12]]) # 3x2
result = np.dot(a, b)
print(result) # 输出: [[ 58 64][139 154]]
```
#### 7. 条件替换
**题目**:将数组中所有负数替换为 0。
**答案**:
```python
arr = np.array([-1, 2, -3, 4])
arr[arr < 0] = 0
print(arr) # 输出: [0 2 0 4]
```
#### 8. 生成随机矩阵
**题目**:生成 $5 \times 5$ 的随机矩阵,元素值在 [0, 100) 区间。
**答案**:
```python
random_matrix = np.random.randint(0, 100, (5, 5))
print(random_matrix)
```
#### 9. 计算统计指标
**题目**:计算数组 `[0, 5, 10, 15]` 的均值、标准差和方差。
**答案**:
```python
arr = np.array([0, 5, 10, 15])
mean = np.mean(arr) # 7.5
std_dev = np.std(arr) # 5.5901699437494745
variance = np.var(arr) # 31.25
```
#### 10. 数组形状变换
**题目**:将一维数组 `[1, 2, 3, 4, 5, 6]` 转换为 $2 \times 3$ 矩阵。
**答案**:
```python
arr = np.array([1, 2, 3, 4, 5, 6])
reshaped = arr.reshape(2, 3)
print(reshaped) # 输出: [[1 2 3][4 5 6]]
```
---
### 更多学习资源建议
1. **官方文档**:[NumPy User Guide](https://numpy.org/doc/stable/user/index.html)
2. **经典教程**:
- 《Python for Data Analysis》第 4 章(Wes McKinney 著)
- 100 道 NumPy 练习题(参考引用内容[^1][^2][^4])
3. **实战平台**:
- LeetCode 数组标签题库
- Kaggle 数据清洗竞赛
阅读全文
相关推荐



















