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.dtypendarray 对象的元素类型
ndarray.itemsizendarray 对象中每个元素的大小,以字节为单位
ndarray.flagsndarray 对象的内存信息
ndarray.realndarray元素的实部
ndarray.imagndarray 元素的虚部

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()

 

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
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值