Python笔记(五):Numpy使用

Numpy是处理矩阵、数组的一个工具,下面来看一下基本操作:

np.array(),直接将输入的数组转换成矩阵,打印一下,属于ndarray,n维矩阵系列。

打出维数:array.ndim

打出形状:array.shape

打出大小:array.size

1.创建array

区别在哪?换个方式:

np.array把原来的List,带","的List换成了不带逗号的ndarray,列表换成了数组,后面是不带逗号的。

np.array()内部关键字:

定义类型:dtype = np.int64,

                  dtype = np.int32

                  dtype = np.float64(精确,占空间)

                  dtype = np.float32(节省空间)

                  ......

         

多出来的小数点,float类型。

2.np.zeros((x,y))

x,行数,y,列数

3行4列的全0矩阵。

3.np.ones((x,y))

同上面一样:

3行4列的全1矩阵。

4.np.arange(起始位,终止位,步长)

5.np.reshape((x,y))

重新规划矩阵形状,比如生成一个1行12列的矩阵,转换成3行4列的矩阵:

这里看到,首先arange,传入一个参数时,默认x=0,步长为1,

其次,np.xxx().xxxx()前后按顺序来执行命令

6.numpy的简单运算

简单的+,-:

简单的*与**:

**代表幂指数,

三角函数:

调用np.sin()  np.cos(),矩阵传入括号内部。

其他函数类似。

7.输出布尔值矩阵

比如,判断一个矩阵中的元素是否小于某个数,输出的也应是个布尔值的矩阵:

8.元素乘与矩阵乘

矩阵间的成法有两种,一种是元素之间对应相称,另一种是矩阵相乘:

分别为c = a*b,   c = np.dot(a,b)

为了方便,转换成2*2矩阵形式:

9.0-1的随机矩阵

np.random.random((x,y))

10.矩阵最大、最小、和

np.sum() 查看矩阵内部和

np.min() 查看矩阵内部最小值

np.max() 查看矩阵内部最大值

内部关键字:

axis:  axis = 1,逐行计算,返回逐行的结果矩阵,axis = 0 逐列计算,返回逐列结果矩阵

1是行,0是列。

11.矩阵索引

np.argmin(),索引矩阵最小值所在位置

这里返回的,是0位,与7位,不是数值。

也可以根据a[x,y]  a[x]/a[x,:],a[:,y]  ,a[x,a:b],a[a:b,y]

(:  单独一个冒号代表所在行或列的所有值)

如:a[:,3]代表第四列的所有值

a[x,y]:

a[x]a[x,:]:

这个是可以直接赋值的,创建一个新对象:

a[:,1]:

a[x,a:b]  第x+1行,的第a+1到b的值

12.平均值,中位数

np.mean() 平均值,

np.median(),中位数

13.累加

np.cumsum(),

14.逐位差

np.diff(),逐个计算两个相邻的差,返回矩阵

15.倒序

倒序,起始位置与终止位置互换,步长为 -1

16.转置

np.transpose()

[ ].T

以前的图片旋转,内部调用的也是这个,图片上多附(角度)

还有一种,直接加T,可直接用于乘法,

17.区间修剪,np.clip()

在矩阵中,在某个区间内,规定最大值,最小值,剪掉没有交集的部分

np.clip(a,a_min,a_max,out = None)

矩阵a 最大值 11,最小值4,现在规定剪刀的最大值为9,最小值为4,那么,矩阵中超过9的一律剪平,全置为9,4刚好为最小

这次,最小值为3,矩阵最小值为4,没有什么可剪的。保持最小值为4

18.循环

逐行输出:for row in a :

                            print(row)

逐行输出列:for row in a.T:

                          print(row)

逐个元素输出,先看下np.flatten()

可以说flatten等于reshape的**-1,-1次方。

Ok,现在逐个输出元素:

19.合并

np.vstack((a,b))  a,b上下合并

np.hstack((a,b)) a,b左右合并

np.concatenate((a,b,b,a),axis = 0/1),多个数列合并

20.数列与矩阵控制

始终区分不开什么是数列,什么是矩阵,

个人理解就是,一个[  ]里面放数字叫做数列,两个[  ],[  ]里面放数字,那叫做两个数列

数列外边再套个[  ],如[   [    ]   ],这叫做一行矩阵,[[ ]   [ ] ]这叫做,1行2列矩阵

那么如何把一行的数列转换成一行矩阵呢?

提供一个方法,创建一个维度,newaxis,

a[newaxis,:]         newaxis这个关键字,直接就是在所在的位置,x或y创建了一个维度,对于一行数列,在行的位置上创建一个维度,那结果是一行矩阵,如果在列位置上创建一个维度,那结果是一列矩阵,又如果,行和列都创建了一个维度,那么此行数列作为一组数列保存在创建的新矩阵中。

简单的方法,.reshape(),直接操作维度。

21.矩阵分割

np.split(ary,indices_or_sections,axis = 0/1)

axis = 1,把a矩阵的行分成2份

如果axis = 0:

有余数,报错,不能够平分列,把2换成3,把列分成三份:

另一种方法:np.vsplit() 列分割v,

                      np.hsplit() 横分割h

22.赋值与复制

在Python中,对变量的赋值,等号两边完全是一致的,包括变量的Id:

也就是说,改变后来的变量,对前面的变量都会有影响

看下np.copy():

对d中元素进行操作:

换个方式

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章