python 科学计算 — numpy 学习笔记

文章出自:https://www.hrwhisper.me/learning-notes-for-python-numpy/

python numpy的学习笔记

要使用numpy,首先需要import进来:

建议使用别名np,因为你会发现这几乎是一个大家都在用的写法!

 

一、创建数组

1.和list类似,可以直接用arange来表示范围:

Output:

 

从[2,20)间隔为3的等差数列

Output:

 

 

类似arange,linspace从[start , stop ] 生成num个数,Num个数间隔相等。(默认为float)

linspace(start, stop, num=50, endpoint=True, retstep=False, dtype=None)

Output:

 

 

2.用list/tuple创建数组(list也可以是二维的)

 

3.快速生成x*y的全零数组

Output:

 

默认生成的类型是浮点型
可以用dtype改为int

还可以通过zeros_like生成相同形状的全0数组,如:

 

0~1的随机数:

 

3.一维转化为二维数组 reshape

 

Output:

PS:

这个会根据列来自动适应行!

下面这句在a=np.arange(10)等价于a = a.reshape(2, 5)

在a=np.arange(20)等价于a = a.reshape(4, 5)!

 

甚至可以转化为更高维的:

Output:

 

当然,也可以二维转化一维的:ravel

Output:

 

 

4. 切割vsplit和hsplit

vsplit和hsplit用法差不多,差别在于:vsplit来进行分行,而hsplit来分列(即作用于同一行中)。

numpy.vsplit(ary, indices_or_sections)

(1)指定切分个数(需要行数能被切分的个数整除)

看下面的代码,生成了6*3的数组,用vsplit切分为3个。

Output:

 

(2)指定位置切分

我只改动了最后一行,将vsplit第二个参数改为一个List,来指定切分的位置。

Output:

 

5.查看数组属性

ndim :维度
shape:各维度的大小
size:全部的元素个数
dtype:查看元素类型
type:数组的类型

Output:

 

二、数组操作

1.四则运算

+’,’-‘,’*’,’/’运算都是基于全部的数组元素的

Output:

 

2.开根号/指数

Output:

 

3.数组最大最小值

Output:

numpy.ptp(a, axis=None, out=None)

返回最大和最小值之差

 

 

4.数组的均值/中位数

Output:

 

5.数组取值

可以直接用下标对齐取值,注意直接赋值的话是浅拷贝!(即a赋给b,意味着b指向了a对应数据的内存地址)

想要真正的复制一份a给b,可以使用copy:

Output:

 

利用’:’可以访问到某一维的全部数据:

Output:

 

6.数组拼接

使用hstack 横向拼接

使用vstack 纵向拼接

Output:

 

 

 

三、矩阵对象

矩阵对象和数组的主要有两点差别:

  • 矩阵是二维的,而数组的可以是任意正整数维
  • 矩阵的’*’操作符进行的是矩阵乘法,乘号左侧的矩阵列和乘号右侧的矩阵行要相等,而在数组中’*’操作符进行的是每一元素的对应相乘,乘号两侧的数组每一维大小需要一致

1.创建矩阵

Output:

 

2.矩阵乘法

为了比较和数组的乘法,特地将b设为单位阵。

Output:

 

3.矩阵转置

Output:

 

4.矩阵求逆

Output:

 

5.特征值和特征向量

Output:

 

 

四、其它

1.缺失值处理

NumPy用nan作为缺失值,可以用isnan判定:

nan_to_num()可用来将nan替换成0

 2.统计函数

np.bincount(a):对整数数组中各个元素出现的次数进行统计,它要求数组中所有元素都是非负的,返回值中,第i个元素表示第i个元素在a中出现的次数。

 3.比较函数

直接用==比较

  • 对于相同长度的,返回一个numpy数组,每个元素为相应位置上是否相等.
  • 长度不相同,返回False

Output:

 


猜你喜欢

转载自blog.csdn.net/qq_36621927/article/details/79728360