NumPy是Python中用于科学计算的基础库之一。它提供了高效的多维数组对象(ndarray)、用于数组计算的函数以及用于读写磁盘上基于数组的数据集的工具。本教程将介绍NumPy的基本概念和用法。
## 安装NumPy
在使用NumPy之前,需要先安装它。可以使用pip命令进行安装:
```
pip install numpy
```
## NumPy数组
NumPy的核心是ndarray对象,它是一个多维数组。ndarray对象可以是一维数组、二维数组或更高维数组。以下是创建ndarray对象的几种方法:
### 从Python列表创建ndarray对象
可以使用`numpy.array()`函数从Python列表创建ndarray对象。例如,以下代码创建了一个一维数组:
```python
import numpy as np
a = np.array([1, 2, 3])
print(a)
```
输出:
```
[1 2 3]
```
可以使用`ndarray.shape`属性获取数组的形状:
```python
print(a.shape)
```
输出:
```
(3,)
```
这表示数组有3个元素。
可以使用`ndarray.dtype`属性获取数组的数据类型:
```python
print(a.dtype)
```
输出:
```
int64
```
这表示数组的元素类型为64位整数。
可以使用`ndarray.ndim`属性获取数组的维度:
```python
print(a.ndim)
```
输出:
```
1
```
这表示数组是一维的。
可以使用`ndarray.size`属性获取数组的元素个数:
```python
print(a.size)
```
输出:
```
3
```
这表示数组有3个元素。
可以使用`ndarray.itemsize`属性获取数组的每个元素的字节数:
```python
print(a.itemsize)
```
输出:
```
8
```
这表示数组的每个元素占用8个字节。
可以使用`ndarray.data`属性获取数组的内存地址:
```python
print(a.data)
```
输出:
```
<memory at 0x7f9d2c2a8f48>
```
### 从Python元组创建ndarray对象
可以使用`numpy.array()`函数从Python元组创建ndarray对象。例如,以下代码创建了一个二维数组:
```python
import numpy as np
a = np.array([(1, 2, 3), (4, 5, 6)])
print(a)
```
输出:
```
[[1 2 3]
[4 5 6]]
```
可以使用`ndarray.shape`属性获取数组的形状:
```python
print(a.shape)
```
输出:
```
(2, 3)
```
这表示数组有2行3列。
可以使用`ndarray.dtype`属性获取数组的数据类型:
```python
print(a.dtype)
```
输出:
```
int64
```
这表示数组的元素类型为64位整数。
可以使用`ndarray.ndim`属性获取数组的维度:
```python
print(a.ndim)
```
输出:
```
2
```
这表示数组是二维的。
可以使用`ndarray.size`属性获取数组的元素个数:
```python
print(a.size)
```
输出:
```
6
```
这表示数组有6个元素。
可以使用`ndarray.itemsize`属性获取数组的每个元素的字节数:
```python
print(a.itemsize)
```
输出:
```
8
```
这表示数组的每个元素占用8个字节。
可以使用`ndarray.data`属性获取数组的内存地址:
```python
print(a.data)
```
输出:
```
<memory at 0x7f9d2c2a8f48>
```
### 使用NumPy函数创建ndarray对象
NumPy提供了许多函数用于创建ndarray对象。以下是一些常用的函数:
- `numpy.zeros(shape, dtype=float, order='C')`:创建一个指定形状和数据类型的全0数组。
- `numpy.ones(shape, dtype=float, order='C')`:创建一个指定形状和数据类型的全1数组。
- `numpy.empty(shape, dtype=float, order='C')`:创建一个指定形状和数据类型的空数组,其元素值未初始化。
- `numpy.arange([start,] stop[, step,], dtype=None)`:创建一个指定范围和步长的一维数组。
- `numpy.linspace(start, stop, num=50, endpoint=True, retstep=False, dtype=None)`:创建一个指定范围和元素个数的一维数组。
例如,以下代码创建了一个全0数组:
```python
import numpy as np
a = np.zeros((2, 3))
print(a)
```
输出:
```
[[0. 0. 0.]
[0. 0. 0.]]
```
可以使用`numpy.ones()`和`numpy.empty()`函数创建全1数组和空数组。
例如,以下代码创建了一个一维数组:
```python
import numpy as np
a = np.arange(10)
print(a)
```
输出:
```
[0 1 2 3 4 5 6 7 8 9]
```
可以使用`numpy.linspace()`函数创建等间隔的一维数组。
例如,以下代码创建了一个一维数组:
```python
import numpy as np
a = np.linspace(0, 1, 5)
print(a)
```
输出:
```
[0. 0.25 0.5 0.75 1. ]
```
## NumPy数组的运算
NumPy数组支持各种数学运算,例如加、减、乘、除等。以下是一些常用的运算:
### 数组加法
可以使用`+`运算符进行数组加法。例如,以下代码将两个数组相加:
```python
import numpy as np
a = np.array([1, 2, 3])
b = np.array([4, 5, 6])
c = a + b
print(c)
```
输出:
```
[5 7 9]
```
### 数组减法
可以使用`-`运算符进行数组减法。例如,以下代码将两个数组相减:
```python
import numpy as np
a = np.array([1, 2, 3])
b = np.array([4, 5, 6])
c = a - b
print(c)
```
输出:
```
[-3 -3 -3]
```
### 数组乘法
可以使用`*`运算符进行数组乘法。例如,以下代码将两个数组相乘:
```python
import numpy as np
a = np.array([1, 2, 3])
b = np.array([4, 5, 6])
c = a * b
print(c)
```
输出:
```
[ 4 10 18]
```
### 数组除法
可以使用`/`运算符进行数组除法。例如,以下代码将两个数组相除:
```python
import numpy as np
a = np.array([1, 2, 3])
b = np.array([4, 5, 6])
c = a / b
print(c)
```
输出:
```
[0.25 0.4 0.5 ]
```
### 数组求幂
可以使用`**`运算符进行数组求幂。例如,以下代码将一个数组的每个元素求平方:
```python
import numpy as np
a = np.array([1, 2, 3])
b = a ** 2
print(b)
```
输出:
```
[1 4 9]
```
联系客服