NumPy与Pandas:数据处理与分析的强大工具
立即解锁
发布时间: 2025-08-22 01:48:48 阅读量: 9 订阅数: 17 


Python数据分析与统计学入门指南
### NumPy与Pandas:数据处理与分析的强大工具
#### 1. NumPy数组操作
在使用NumPy时,数组元素的修改和组合是常见操作。虽然不能直接向数组添加新元素,但可以修改现有元素的值,例如:
```python
a[0]=2
```
##### 1.1 数组组合方法
数组组合有三种方法:追加、拼接和堆叠。
- **追加(Appending)**:使用`np.append`函数将一个数组添加到另一个数组的末尾。
```python
import numpy as np
x=np.array([[1,2],[3,4]])
y=np.array([[6,7,8],[9,10,11]])
print(np.append(x,y))
```
输出结果:
```plaintext
array([ 1, 2, 3, 4, 6, 7, 8, 9, 10, 11])
```
- **拼接(Concatenation)**:使用`np.concatenate`函数沿指定轴(垂直或水平)拼接数组。默认沿“0”轴垂直拼接,若要水平拼接,需设置`axis=1`。
```python
x=np.array([[1,2],[3,4]])
y=np.array([[6,7],[9,10]])
print(np.concatenate((x,y)))
print(np.concatenate((x,y),axis=1))
```
输出结果:
```plaintext
array([[ 1, 2],
[ 3, 4],
[ 6, 7],
[ 9, 10]])
array([[ 1, 2, 6, 7],
[ 3, 4, 9, 10]])
```
- **堆叠(Stacking)**:分为垂直堆叠和水平堆叠。
- **垂直堆叠(Vertical stacking)**:使用`np.vstack`函数将数组一个接一个地堆叠。要求垂直堆叠的数组每个子数组的元素数量相同。
```python
x=np.array([[1,2],[3,4]])
y=np.array([[6,7],[8,9],[10,11]])
print(np.vstack((x,y)))
```
输出结果:
```plaintext
array([[ 1, 2],
[ 3, 4],
[ 6, 7],
[ 8, 9],
[10, 11]])
```
- **水平堆叠(Horizontal stacking)**:使用`np.hstack`函数将数组并排堆叠。要求水平堆叠的数组子数组数量相同。
```python
x=np.array([[1,2],[3,4]])
y=np.array([[6,7,8],[9,10,11]])
print(np.hstack((x,y)))
```
输出结果:
```plaintext
array([[ 1, 2, 6, 7, 8],
[ 3, 4, 9, 10, 11]])
```
##### 1.2 条件测试
NumPy使用逻辑运算符(`&`、`|`、`~`)和函数(如`np.any`、`np.all`、`np.where`)来检查数组元素是否满足特定条件。
```python
x=np.linspace(1,50,10)
print(x)
# 检查所有元素是否都大于20
print(np.all(x>20))
# 检查是否有元素大于20
print(np.any(x>20))
# 返回小于10的元素的索引
print(np.where(x<10))
# 筛选出小于10的元素
print(x[np.where(x<10)])
# 检查同时满足大于10且小于50的元素
print(x[(x>10) & (x<50)])
# 检查满足大于10或小于5的元素
print(x[(x>10) | (x<5)])
# 筛选出大于8的元素
print(x[~(x<8)])
```
输出结果:
```plaintext
array([ 1. , 6.44444444, 11.88888889, 17.33333333, 22.77777778,
28.22222222, 33.66666667, 39.11111111, 44.55555556, 50. ])
False
True
(array([0, 1], dtype=int64),)
array([1. , 6.44444444])
array([11.88888889, 17.33333333, 22.77777778, 28.22222222, 33.66666667,
39.11111111, 44.55555556])
array([ 1. , 11.88888889, 17.33333333, 22.77777778, 28.22222222,
33.66666667, 39.11111111, 44.55555556, 50. ])
array([11.88888889, 17.33333333, 22.77777778, 28.22222222, 33.66666667,
39.11111111, 44.55555556, 50. ])
```
##### 1.3 广播、向量化和算术运算
- **广播(Broadcasting)**:当两个数组满足一定条件时,可以进行算术运算。
- 两个数组维度相同。
```python
x=np.arange(0,12).reshape(2,6)
y=np.arange(5,17).reshape(2,6)
print(x*y)
```
- 其中一个数组是单元素数组。
```python
x=np.arange(0,12).reshape(2,6)
y=np.array([1])
print(x-y)
```
- 数组与标量组合。
```python
x=np.arange(0,12).reshape(2,6)
y=2
print(x/y)
```
可以使用算术运算符(`+`、`-`、`*`、`/`)或函数(`np.add`、`np.subtract`、`np.multiply`、`np.divide`)进行数组的加减乘除运算。
```python
print(np.add(x,y))
print(x+y)
```
- **向量化(Vectorization)**:可以方便地对数组中的每个元素应用算术运算符,而无需迭代元素。
```python
x=np.array([2,
```
0
0
复制全文
相关推荐










