Python基础教程(二)numpy

参考内容:

菜鸟教程 https://www.runoob.com/numpy/numpy-tutorial.html

清华计算机博士带你学-Python金融量化分析 https://www.bilibili.com/video/BV1i741147LS?t

1. 介绍与安装

NumPy(Numerical Python) 是 Python 语言的一个扩展程序库,支持大量的维度数组与矩阵运算,此外也针对数组运算提供大量的数学函数库。

NumPy 的前身 Numeric 最早是由 Jim Hugunin 与其它协作者共同开发,2005 年,Travis Oliphant 在 Numeric 中结合了另一个同性质的程序库 Numarray 的特色,并加入了其它扩展而开发了 NumPy。NumPy 为开放源代码并且由许多协作者共同维护开发。

安装 NumPy 最简单的方法就是使用pip工具:

pip install numpy 

引用方法:

import numpy as np

Linux 下安装

Ubuntu & Debian

sudo apt-get install python-numpy python-scipy python-matplotlib ipython ipython-notebook python-pandas python-sympy python-nose

CentOS/Fedora

sudo dnf install numpy scipy python-matplotlib ipython python-pandas sympy python-nose atlas-devel

Mac 系统

Mac 系统的 Homebrew 不包含 NumPy 或其他一些科学计算包,所以可以使用以下方式来安装:

pip3 install numpy scipy matplotlib -i https://pypi.tuna.tsinghua.edu.cn/simple

2. 数据类型

布尔型 bool_
整型 int_ int8 int16 int32 int64
无符号整型 uint8 uint16 uint32 uint64
浮点型 float_ float16 float32 float64
复数型 complex_ complex64 complex128

3. 常用属性

属性 说明
ndarray.ndim 秩,即轴的数量或维度的数量
ndarray.shape 数组的维度,对于矩阵,n 行 m 列
ndarray.size 数组元素的总个数,相当于 .shape 中 n*m 的值
ndarray.dtype ndarray 对象的元素类型
ndarray.itemsize ndarray 对象中每个元素的大小,以字节为单位
ndarray.flags ndarray 对象的内存信息
ndarray.real ndarray元素的实部
ndarray.imag ndarray 元素的虚部

4. array创建

方法 描述
array() 将列表转换为数组,可选择显示指定dtype
arange() range的numpy版,支持浮点数
linspace() 类似arange(),第三个参数为数组长度
zeros() 根据指定形状和dtype创建全0数组
ones() 根据指定形状和dtype创建全1数组
empty() 根据指定形状和dtype创建全空数组(随机值,内存空间决定)
eye() 根据指定边长和dtype创建单位矩阵

 array()

a = np.array([[1,2,3],[4,5,6]])
print(a)

或者

a = [[1,2,3],[4,5,6]]
a = np.array(a)
print(a)

 输出:

[[1 2 3]
 [4 5 6]]

arange()和linspace()

a = np.arange(0,99,2.5)                #第三个参数表示步长
b = np.linspace(0,99,100,dtype=int)    #第三个参数表示数组长度
print(a)
print(b)

输出:

[ 0.   2.5  5.   7.5 10.  12.5 15.  17.5 20.  22.5 25.  27.5 30.  32.5
 35.  37.5 40.  42.5 45.  47.5 50.  52.5 55.  57.5 60.  62.5 65.  67.5
 70.  72.5 75.  77.5 80.  82.5 85.  87.5 90.  92.5 95.  97.5]
[ 0  1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47
 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71
 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95
 96 97 98 99]

 zeros()、ones()和empty()

a=np.zeros(10,dtype=int)
print(a)
print(a.dtype)

a=np.ones(10,dtype=int)
print(a)
print(a.dtype)

a=np.empty(10)
print(a)
print(a.dtype)

输出:

[0 0 0 0 0 0 0 0 0 0]
int32
[1 1 1 1 1 1 1 1 1 1]
int32
[7.8e-322 0.0e+000 0.0e+000 0.0e+000 0.0e+000 0.0e+000 0.0e+000 0.0e+000
 0.0e+000 0.0e+000]
float64

 

5. ndarray批量运算

数组和标量之间的运算

  • a+1    a*3   1//a    a**0.5     a>5

同样大小数组之间的运算

  • a+b    a/B        a%b    a==b
a = np.arange(0,9)
b = np.arange(10,19)
print(a+1)
print(a+b)
print(a>b)

输出:

[1 2 3 4 5 6 7 8 9]
[10 12 14 16 18 20 22 24 26]
[False False False False False False False False False]

matplotlib画图,以a**2为例

x = np.linspace(-10,10,1000)
y = x**2
plt.plot(x,y)
plt.show()

Python基础教程(二)numpy_第1张图片 

6. 索引和切片

切片

包头不包尾

#切片
a = np.arange(15)
print(a)
print(a[2:7])

输出:

[ 0  1  2  3  4  5  6  7  8  9 10 11 12 13 14]
[2 3 4 5 6]

 二维数组切片

把第一行第二行的前两个数据切出来

a[0:2,0:2],切片语句中的逗号前面的按行切,逗号后面的按列切。

a = np.arange(15).reshape(3,5)
print(a)
print(a[0:2,0:2])

输出:

[[ 0  1  2  3  4]
 [ 5  6  7  8  9]
 [10 11 12 13 14]]
[[0 1]
 [5 6]]

使用 a[0:2][0:2]是错误的,这个表示的是按行切[0:2]之后,再按行切[0:2]。相当于

b = a[0:2]
c = b[0:2]

输出结果是

[[0 1 2 3 4]
 [5 6 7 8 9]]

 布尔型索引

找出array中所有大于50的元素

a = [random.randint(0,100) for i in range(20)]
a = np.array(a)
print(a)
print(a>50)
a = a[a>50]
print(a)

输出结果

[ 69 100  10  71  83  29  55  20  30  16  50   4  57  45  25  45   9  51
   7  98]
[ True  True False  True  True False  True False False False False False
  True False False False False  True False  True]
[ 69 100  71  83  55  57  51  98]

 花式索引

切出第1、3、5项。

a=[random.randint(0,10)for i in range(20)]
print(a)
a = np.array(a)
a = a[[1,3,5]]
print(a)

输出

[2, 0, 10, 8, 9, 10, 8, 4, 2, 2, 3, 9, 6, 5, 5, 8, 7, 5, 1, 5]
[ 0  8 10]

二维数组花式索引

切出第1行中的第1、3项和第3行中的1、3项元素

a = np.arange(20)
a.shape = (4,5)
print(a)
a = a[[1,3],:]
print(a)
a = a[:,[1,3]]
print(a)

输出结果

[[ 0  1  2  3  4]
 [ 5  6  7  8  9]
 [10 11 12 13 14]
 [15 16 17 18 19]]
[[ 5  6  7  8  9]
 [15 16 17 18 19]]
[[ 6  8]
 [16 18]]

 

7. 通用函数

能够同时对数组中的所有元素进行运算的函数

  • 一元函数:abs,sqrt,exp,log,ceil,floor,rint,trunc,modf,isnan,isinf,cos,sin,tan
  • 二元函数:add,substract,multiply,divide,power,mod,maximum,mininum

你可能感兴趣的:(Python,python,numpy)