Python numpy中矩阵的基本用法汇总
2019-09-13 11:52:28 来源:易采站长站 作者:于丽
2.1,zeros
zeros函数是生成指定维数的全0数组
>>myMat=np.zeros(3) ###生成一个一维的全0数组 >>print(myMat) >>array([0.,0.,0.]) >>myMat1=np.zeros((3,2)) ####生成一个3*2的全0数组 >>print(myMat) >>array([[0.,0.], [0.,0.] [0.,0.]])
2.2,ones
ones函数是用于生成一个全1的数组
>>onesMat=np.ones(3) ###1*3的全1数组 >>print(onesMat) >>array([1.,1.,1.]) >>onesMat1=np.ones((2,3)) ###2*3的全1数组 >>print(onesMat1) >>array([[1.,1.,1.],[1.,1.,1.]])
2.3,eye
eye函数用户生成指定行数的单位矩阵
>>eyeMat=np.eye(4) >>print(eyeMat) >>array([[1.,0.,0.,0.], [0.,1.,0.,0.], [0.,0.,1.,0.,], [0.,0.,0.,1.]])
2.4,full
numpy.full(shape,fill_value=num)用于创建一个自定义形状的数组,可以自己指定一个值,用它填满整个数组。
fill_value 用来填充的值,可以是数字,也可以是字符串
nd_test = np.full(shape=(2,3,4),fill_value='ai') print(nd_test) array([[['ai', 'ai', 'ai', 'ai'], ['ai', 'ai', 'ai', 'ai'], ['ai', 'ai', 'ai', 'ai']], [['ai', 'ai', 'ai', 'ai'], ['ai', 'ai', 'ai', 'ai'], ['ai', 'ai', 'ai', 'ai']]], dtype='<U2')
2.5 nonzero()
nonzero函数是numpy中用于得到数组array中非零元素的位置(数组索引)函数。它的返回值是一个长度为a.ndim(数组a的轴数)的元组,元组的每个元素都是一个整数数组,其值为非零元素的下标在对应轴上的值。
只有a中非零元素才会有索引值,那些零值元素没有索引值,通过a[nonzero(a)]得到所有a中的非零值。
import numpy as np SS = [0,0,0,0] re = np.array(SS) print(SS) print(np.nonzero(re)) ''' [0, 0, 0, 0] (array([], dtype=int64),) '''
a是一维数组(索引1和索引2的位置上元素的值非零)
>>> import numpy as np >>> a = [0,2,3] >>> b = np.nonzero(a) >>> b (array([1, 2], dtype=int64),) >>> np.array(b).ndim 2
a是多维数组
from numpy import * b = array([[1,1,1,0,1,1],[1,1,1,0,1,0],[1,1,1,0,1,1]]) print(b) c = nonzero(b) print(c) ''' [[1 1 1 0 1 1] [1 1 1 0 1 0] [1 1 1 0 1 1]] (array([0, 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 2], dtype=int64), array([0, 1, 2, 4, 5, 0, 1, 2, 4, 0, 1, 2, 4, 5], dtype=int64)) '''
解释一下:矩阵 b中,b[0,0] b[0,1],b[0,2],b[0,4],b[0,5],b[1,0],b[1,1],b[1,2],b[1,4],b[2,0],b[2,1],b[2,2],b[2,4],b[2,5]元素的值非零。
当使用布尔数组直接作为下标对象护着元组下标对象中有布尔数组时,都相当于用nonzero()将布尔数组转换成一组整数数组,然后使用整数数组进行下标计算。
nonzero(a)返回数组a中值不为零的元素的下标,它的返回值是一个长度为a.ndim(数组a的轴数)的元组,元组的每个元素都是一个整数数组,其值为非零元素的下标在对应轴上的值。例如对于1维布尔数组b1,nonzero(b1)所得到的是一个长度为1的元组,它表示b1[0]和b1[2]的值不为0(FALSE)。













闽公网安备 35020302000061号