# Numpy 简介

## 导入numpy

**Numpy**是**Python**的一个很重要的第三方库,很多其他科学计算的第三方库都是以**Numpy**为基础建立的。

**Numpy**的一个重要特性是它的数组计算。

在使用**Numpy**之前,我们需要导入`numpy`包:

In [1]:

```py
from numpy import *

```

使用前一定要先导入 Numpy 包,导入的方法有以下几种:

```py
import numpy
    import numpy as np
    from numpy import *
    from numpy import array, sin

```

事实上,在**ipython**中可以使用magic命令来快速导入**Numpy**的内容。

In [2]:

```py
%pylab

```

```py
Using matplotlib backend: Qt4Agg
Populating the interactive namespace from numpy and matplotlib

```

## 数组上的数学操作

假如我们想将列表中的每个元素增加`1`,但列表不支持这样的操作(报错):

In [3]:

```py
a = [1, 2, 3, 4]
a + 1

```

```py
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-3-068856d2a224> in <module>()
 1 a = [1, 2, 3, 4]
----> 2  a + 1

TypeError: can only concatenate list (not "int") to list
```

转成 `array` :

In [4]:

```py
a = array(a)
a

```

Out[4]:

```py
array([1, 2, 3, 4])
```

`array` 数组支持每个元素加 `1` 这样的操作:

In [5]:

```py
a + 1

```

Out[5]:

```py
array([2, 3, 4, 5])
```

与另一个 `array` 相加,得到对应元素相加的结果:

In [6]:

```py
b = array([2, 3, 4, 5])
a + b

```

Out[6]:

```py
array([3, 5, 7, 9])
```

对应元素相乘:

In [7]:

```py
a * b

```

Out[7]:

```py
array([ 2,  6, 12, 20])
```

对应元素乘方:

In [8]:

```py
a ** b

```

Out[8]:

```py
array([   1,    8,   81, 1024])
```

## 提取数组中的元素

提取第一个元素:

In [9]:

```py
a[0]

```

Out[9]:

```py
1
```

提取前两个元素:

In [10]:

```py
a[:2]

```

Out[10]:

```py
array([1, 2])
```

最后两个元素:

In [11]:

```py
a[-2:]

```

Out[11]:

```py
array([3, 4])
```

将它们相加:

In [12]:

```py
a[:2] + a[-2:]

```

Out[12]:

```py
array([4, 6])
```

## 修改数组形状

查看 `array` 的形状:

In [13]:

```py
a.shape

```

Out[13]:

```py
(4L,)
```

修改 `array` 的形状:

In [14]:

```py
a.shape = 2,2
a

```

Out[14]:

```py
array([[1, 2],
       [3, 4]])
```

## 多维数组

`a` 现在变成了一个二维的数组,可以进行加法:

In [15]:

```py
a + a

```

Out[15]:

```py
array([[2, 4],
       [6, 8]])
```

乘法仍然是对应元素的乘积,并不是按照矩阵乘法来计算:

In [16]:

```py
a * a

```

Out[16]:

```py
array([[ 1,  4],
       [ 9, 16]])
```

## 画图

linspace 用来生成一组等间隔的数据:

In [17]:

```py
a = linspace(0, 2*pi, 21)
%precision 3
a

```

Out[17]:

```py
array([ 0\.   ,  0.314,  0.628,  0.942,  1.257,  1.571,  1.885,  2.199,
        2.513,  2.827,  3.142,  3.456,  3.77 ,  4.084,  4.398,  4.712,
        5.027,  5.341,  5.655,  5.969,  6.283])
```

三角函数:

In [18]:

```py
b = sin(a)
b

```

Out[18]:

```py
array([  0.000e+00,   3.090e-01,   5.878e-01,   8.090e-01,   9.511e-01,
         1.000e+00,   9.511e-01,   8.090e-01,   5.878e-01,   3.090e-01,
         1.225e-16,  -3.090e-01,  -5.878e-01,  -8.090e-01,  -9.511e-01,
        -1.000e+00,  -9.511e-01,  -8.090e-01,  -5.878e-01,  -3.090e-01,
        -2.449e-16])
```

画出图像:

In [19]:

```py
%matplotlib inline
plot(a, b)

```

Out[19]:

```py
[<matplotlib.lines.Line2D at 0xa128ba8>]
```

![](data:image/png;base64,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)

## 从数组中选择元素

假设我们想选取数组b中所有非负的部分,首先可以利用 `b` 产生一组布尔值:

In [20]:

```py
b >= 0

```

Out[20]:

```py
array([ True,  True,  True,  True,  True,  True,  True,  True,  True,
        True,  True, False, False, False, False, False, False, False,
       False, False, False], dtype=bool)
```

In [21]:

```py
mask = b >= 0

```

画出所有对应的非负值对应的点:

In [22]:

```py
plot(a[mask], b[mask], 'ro')

```

Out[22]:

```py
[<matplotlib.lines.Line2D at 0xa177be0>]
```

![](data:image/png;base64,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)