# 原创 : Numpy学习(一)——Numpy 简介 # Numpy学习(一)——Numpy 简介 ## Numpy 简介 ### 导入numpy Numpy是Python的一个很重要的第三方库,很多其他科学计算的第三方库都是以Numpy为基础建立的。 Numpy的一个重要特性是它的**数组计算**。 ``` from numpy import * ``` 以下几种导入方式都行 ``` import numpy import numpy as np from numpy import * from numpy import array, sin ``` ipython中可以使用magic命令来快速导入Numpy的内容。 ``` %pylab ``` ``` Using matplotlib backend: TkAgg Populating the interactive namespace from numpy and matplotlib ``` ### 数组上的数学操作 ``` a = [1, 2, 3, 4] a + 1 # 直接运行报错 ``` ``` TypeErrorTraceback (most recent call last) <ipython-input-3-eb27785ac8c2> 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 ``` ``` array([1, 2, 3, 4]) ``` ``` a + 1 ``` ``` array([2, 3, 4, 5]) ``` ``` b = array([2, 3, 4, 5]) a+b ``` ``` array([3, 5, 7, 9]) ``` ``` a*b ``` ``` array([ 2, 6, 12, 20]) ``` ``` a**b ``` ``` array([ 1, 8, 81, 1024]) ``` ### 提取数组中的元素 ``` a[0] ``` ``` 1 ``` ``` a[:2] ``` ``` array([1, 2]) ``` ``` a[-2:] ``` ``` array([3, 4]) ``` ``` a[:2]+a[-2:] ``` ``` array([4, 6]) ``` ### 修改数组形状 ``` # 查看array的形状 a.shape ``` ``` (4,) ``` ``` # 修改array的形状 a.shape = 2,2 a ``` ``` array([[1, 2], [3, 4]]) ``` ### 多维数组 ``` a ``` ``` array([[1, 2], [3, 4]]) ``` ``` a+a ``` ``` array([[2, 4], [6, 8]]) ``` ``` a*a ``` ``` array([[ 1, 4], [ 9, 16]]) ``` ### 画图 **linspace** 用来生成一组等间隔的数据: ``` # precision该方法用来定义小数点后的位数 a = linspace(0, 2*pi, 21) %precision 3 a ``` ``` 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]) ``` ``` # 三角函数 b = sin(a) b ``` ``` 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) ``` ``` [<matplotlib.lines.Line2D at 0xab0fe10>] ``` ### 从数组中选择元素 ``` b ``` ``` 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]) ``` ``` # 假设我们想选取数组b中所有非负的部分,首先可以利用 b 产生一组布尔值 b >= 0 ``` ``` array([ True, True, True, True, True, True, True, True, True, True, True, False, False, False, False, False, False, False, False, False, False]) ``` ``` mask = b >= 0 ``` ``` # 画出所有对应的非负值对应的点: plot(a[mask], b[mask], 'ro') ``` ``` [<matplotlib.lines.Line2D at 0xafd0e50>] ``` ``` plot(a[mask], b[mask], 'r') ``` ``` [<matplotlib.lines.Line2D at 0xa833ad0>] ```