Numpy是Python的一个很重要的第三方库,很多其他科学计算的第三方库都是以Numpy为基础建立的。
Numpy的一个重要特性是它的数组计算,Numpy是C写的,比python的for循环快很多。
在使用Numpy之前,我们需要导入numpy
包:
from numpy import *
如果只采用简单的
数组上的数学操作:
假如我们想将列表中的每个元素增加
1
,但列表不支持这样的操作(报错):
a = [1, 2, 3, 4]
a + 1
--------------------------------------------------------------------------- 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 便能成功:
a = array(a)
a + 1
输出结果: array([2, 3, 4, 5])
修改数组形状
a.shape
a.shape = 2,2
a
输出结果:
(4L,)
array([[1, 2], [3, 4]])画图
linspace 用来生成一组等间隔的数据:a = linspace(0, 2*pi, 21) %precision 3 a
b = sin(a) b
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])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])%matplotlib inline plot(a, b)
从数组中选择元素
假设我们想选取数组b中所有非负的部分,首先可以利用b
产生一组布尔值:
b >= 0
mask = b >= 0
plot(a[mask], b[mask], 'ro')
array([ True, True, True, True, True, True, True, True, True, True, True, False, False, False, False, False, False, False, False, False, False], dtype=bool)
参考文献: