import numpy as np
# 生成等差array
data1 = np.arange(1,10,2)
data1 #结果 array([1, 3, 5, 7, 9])
# 1.一维数组索引
data1[1] #结果 3
# 2. 一维数组切片
data1[0:3] #结果 array([1, 3, 5])
# 3. 一维数组切片
data1[::2] #结果 array([1, 5, 9])
# 4.一维数组索引
data1[-1]#结果 9
hstack:代表水平方向叠加,要想叠加成功,行必须一致
vstack:代表垂直方向叠加,要想叠加成功,列必须一致
concatenate:手动指定叠加方向,axis=0 表示垂直方向叠加,axis=1表示水平方向叠加,axis=None表示叠加为一维数组。
import numpy as np
h1 = np.random.randint(0,10,size=(3,1))
h1 #结果:
'''array([[4],
[8],
[2]])'''
h2 = np.random.randint(0,10,size=(3,4))
h2 #结果:
'''array([[6, 9, 5, 0],
[6, 1, 9, 4],
[8, 8, 9, 8]])'''
h4 = np.random.randint(0,10,size=(1,4))
h4 # 结果
'''array([[2, 3, 5, 5]])'''
# 2.横向堆叠
h3 = np.hstack([h1,h2])
h3 #结果:
'''array([[4, 6, 9, 5, 0],
[8, 6, 1, 9, 4],
[2, 8, 8, 9, 8]])'''
# 3.使用concatenate进行自定义拼接
np.concatenate([h1,h2],axis=1) #横向拼接 结果:
'''array([[4, 6, 9, 5, 0],
[8, 6, 1, 9, 4],
[2, 8, 8, 9, 8]])'''
# 3.使用concatenate进行自定义堆叠
np.concatenate([h1,h2],axis=None)#拼接成一维数组 结果:
'''
array([4, 8, 2, 6, 9, 5, 0, 6, 1, 9, 4, 8, 8, 9, 8])
'''
# 3.使用concatenate进行自定义堆叠
np.concatenate([h2,h3],axis=0)#纵向拼接 结果
'''array([[6, 9, 5, 0],
[6, 1, 9, 4],
[8, 8, 9, 8],
[2, 3, 5, 5]])'''
hsplit:水平方向分割。
vsplit:垂直方向分割。
split/array_split: 自定义分割,axis=1 水平分割,axis=0 垂直方向分割。
# 4.分割-水平方向分割
h5 = np.random.randint(0,100,size=(6,4))
h5
'''array([[13, 7, 29, 65],
[57, 50, 79, 12],
[ 9, 16, 82, 86],
[97, 62, 43, 92],
[66, 21, 78, 34],
[95, 33, 51, 63]])'''
np.hsplit(h5,2) # 将h5水平分割等分两个数组,被分割的列一定为指定分割数的倍数
'''[array([[13, 7],
[57, 50],
[ 9, 16],
[97, 62],
[66, 21],
[95, 33]]),
array([[29, 65],
[79, 12],
[82, 86],
[43, 92],
[78, 34],
[51, 63]])]'''
np.hsplit(h5,[1,3])#将h5从下标为1、3的地方水平分割
'''[array([[13],
[57],
[ 9],
[97],
[66],
[95]]),
array([[ 7, 29],
[50, 79],
[16, 82],
[62, 43],
[21, 78],
[33, 51]]),
array([[65],
[12],
[86],
[92],
[34],
[63]])]
'''
# 5 分割-纵向分割
np.vsplit(h5,3)
'''
[array([[13, 7, 29, 65],
[57, 50, 79, 12]]),
array([[ 9, 16, 82, 86],
[97, 62, 43, 92]]),
array([[66, 21, 78, 34],
[95, 33, 51, 63]])]
'''
np.vsplit(h5,[1,2])
'''
[array([[13, 7, 29, 65]]),
array([[57, 50, 79, 12]]),
array([[ 9, 16, 82, 86],
[97, 62, 43, 92],
[66, 21, 78, 34],
[95, 33, 51, 63]])]
'''
# 6 分割-自定义分割
np.split(h5,2,axis=1) #横向分割,按列分割
'''
[array([[13, 7],
[57, 50],
[ 9, 16],
[97, 62],
[66, 21],
[95, 33]]),
array([[29, 65],
[79, 12],
[82, 86],
[43, 92],
[78, 34],
[51, 63]])]
'''
np.split(h5,3,axis=0)#纵向分割,按行分割
'''
[array([[13, 7, 29, 65],
[57, 50, 79, 12]]),
array([[ 9, 16, 82, 86],
[97, 62, 43, 92]]),
array([[66, 21, 78, 34],
[95, 33, 51, 63]])]
'''
.T: T属性可对数组进行转置
.transpose:返回一个View(浅拷贝),修改返回值,会影响到原来的数组
# 7 转置
h6 = np.random.randint(0,100,size=(3,1))
h6
'''
array([[52],
[17],
[80]])
'''
h6.T #T属性转置
'''
array([[52, 17, 80]])
'''
h7 = h6.transpose() #浅拷贝
h7
'''
array([[52, 17, 80]])
'''
h7[0,0]=100
h6
'''
array([[100],
[ 17],
[ 80]])
'''
# 8 矩阵乘法
h6.dot(h6.T)
'''
array([[10000, 1700, 8000],
[ 1700, 289, 1360],
[ 8000, 1360, 6400]])
'''
对变量进行拷贝,但是它们指向的内存空间都是相同的。
下图示意
np.savetxt(frame,array,fmt=’%.18e’,delimiter=None)
frame:文件、字符串或产生器,可以是.gz或.bz2文件
array:存入文件的数组
fmt:写入文件格式.
delimiter:分割字符串,默认是空格
loadtxt(fname, dtype=
fname:解析文件名,一般为csv文件
dtype:数据类型转换
comments:最开始处的注释标识
delimiter:分隔符解析
skiprows:跳过多少行
np.save(fname,array):npy后缀名文件,可不设置header
np.savez(fname,array):npz后缀名文件,压缩格式,可不设置header
np.load(fname):
NAN:not a number。不是一个数字的意思,但它属于浮点类型,想要进行数据操作请注意它的类型。
特点:NAN和NAN是不相等的,NAN和任何值做运算,值都为NAN。
很多时候文件中存在缺失值,读取默认用NAN代替
inf:Infinity,代表无穷大,属于浮点类型,np.inf代表正无穷大,-np.inf代表负无穷大。2/0
np.random.seed()不指定值,将默认为当前时间作为种子随机产生数值,若是seed固定,则随机数将固定。
生成均值( μ \mu μ)为0,标准差( σ \sigma σ)为1的正态分布的值
从一个列表或数值中,随机进行采用,或者从指定的区间中进行采样,采用的个数指定
axis=0 代表最外面的轴,依次往里的括号对应axis的计数依次加1。
函数 | 描述 |
---|---|
np.abs | 绝对值 |
np.sqrt | 开根 |
np.exp | 计算指数 |
np.log,np.log10,np.log2,np.log1p | 求e为底,以10为底,以2为底,以(1+x)为底的对数,给的值必须>0且不为1 |
np.sign | 将数据中的值标签化,大于0的为1,等于0的为0,小于1的为-1 |
np.ceil | 朝着无穷大的方向取整,比如5.1会变成6,-6.3会变成-6 |
np.floor | 朝着无穷肖的方向取整,比如5.1会变成5,-6.3会变成-7 |
np.rint,np.round | 返回四舍五入的值 |
np.modf | 将整数部分和小数部分分开返回 |
函数 | 描述 |
---|---|
np.add | 加法运算 |
np.subtract | 减法运算 |
np.negative | 负数运算 |
np.multiply | 乘法运算 |
np.divide | 除法运算 |
np.floor_divide | 取整运算 |
np.mod | 取余运算 |
greater,greater_equal,less,less_equal,equal,not_equal | >,>=,<,<=,=,!= |
logical_and | & |
logical_or | | |
函数 | 描述 |
---|---|
np.sum | 计算元素的和 |
np.prod | 计算元素的积 |
np.mean | 计算元素的平均值 |
np.std | 计算元素的标准差 |
np.var | 计算元素的方差 |
np.min | 计算元素的最小值 |
np.max | 计算元素的最大值 |
np.argmin | 计算元素的最大值所在位置 |
np.argmax | 计算元素的最大值所在位置 |
np.median | 计算元素的最大值所在位置 |
函数 | 描述 |
---|---|
np.any | 验证任何一个元素是否为真 |
np.all | 验证所有元素是否为真 |
函数 | 描述 |
---|---|
np.sort | 默认升序排序,不改变值 |
ndarry.sort | 排序,会改变ndarray的值 |
-np.sort(-ndarray) | 降序排序,不改变值 |
np.argsort(ndarray) | 获取排序索引 |