python-numpy入门

 

import numpy as np
"""
初始化多维数组,dtype为数据类型,shape为数组形状,ndim表示维度数
np.empty() 快速创建对象,数值没有实际意义
"""
z = np.empty([2,3,4])
#print(z)
#print(z.dtype,z.shape,z.ndim)

"""
arrage(x) 表示生成0到x-1的一维整数组,
reshape 表示改变数据的维度,物理存储不会改变,仅改变视图 只要乘积相同,可以随意改变形状。
size属性表示数组的大小,元素总和
itemsize 表示数组元素字节数 int为4 float为8
flatten() 表示将数组打平成一维数组
"""
x = np.arange(12).reshape(3,4)
# print(x)
# print(x.size,x.itemsize)
# print(x.flatten())

"""
构建ndarray对象
    np.array()
    np.ones() 创建全是1的数组对象
    np.zeros() 创建全是0的数组对象
    
"""
x1 = np.array([[1,2],[3,4]])
#print(x1)
x2 = np.ones([3,4])
#print(x2)
x3 = np.zeros([3,4])
#print(x3)

"""
随机数
    np.random.seed(n) 记录随机数,便于复现
    np.random.randint(low,high,size) 生成low到high之间的随机整数。
    np.linspace(0,20,21) 生成等差数列 0到20 生成21个数
    np.logspace(1,4,5,base=10) base是底数,1到4为指数,生成5个数
"""
np.random.seed(1)
r1 = np.random.random([2,3])
#print(r1)
np.random.seed(1)
r2 = np.random.random([3,3])
#print(r2)
r3 = np.random.ranf([2,3])
#print(r3)
r4 = np.random.randint(1,10,[3,3])
#print(r4)
r5 = np.linspace(0,20,10)
#print(r5)
r6 = np.logspace(1,4,5,base=10)
#print(r6)

"""
切片索引
    一维数组:x[0:10:2] 根据索引0到9 每隔2个取数 
            x[::-1] -1表示倒序
    二维数组 x[:,0] :表示这个维度全取
            x[[0,1],0] 可以选择每个维度取哪几行
            s2[np.ix_([0,2],[0,2])] 获取指定行列元素
"""
s1 = np.arange(12)
#print(x1[0:10:2])
#print(s1[::-1])
s2 = np.arange(12).reshape([3,4])
# print(s2)
# print(s2[0,:]) #第一行
# print((s2[:,0])) #第一列
# print(s2[[1,2],0]) #取第2,3行的第一列元素
#print(s2[np.ix_([0,2],[0,2])]) #指定行列的元素

"""
广播
    如果相加元素维度不同,自动广播成相对大的维度
    np.title() 复制数组。
"""
g1 =  np.arange(12).reshape([3,4])
#print(g1+10) #每个元素都加10
#print(g1+np.array([[1,2,3,4]])) #每行都加1234
g2 = np.arange(24).reshape(6,4)
gg = np.array([[1,2],[3,4]])
gg = np.tile(gg,(3,2)) #行上赋值3次,列上赋值2次
#print(g2+gg)

"""
数组堆叠:
    np.vstack() 垂直方向上堆叠
    np.hstack() 水平方向上堆叠
    np.stack((x1,x2),axis=0) 不同维度上堆叠
"""
a1 = np.arange(6).reshape(2,3)
ones1 = np.ones([2,3])
# print(np.vstack([a1,ones1]))
# print(np.hstack([a1,ones1]))
# print(np.stack([a1,ones1],axis=0))

"""
数组精度
    np.around(a) 四舍五入 <=2.5舍 >2.5 入
    np.ceil(a) 向上取整
    np.floor(a) 向下 取整
"""
a = 2.51
#print(np.around(a))
# print(np.ceil(a))
# print(np.floor(a))

"""
基本算数
    np.power(x,2,out=x)  做完平方后赋值给x
    np.sqrt(x) 开平方
    x.mean(0) 求每行平均
    x.mean(1) 求每列平均
"""
suan = np.arange(6).reshape([2,3])
#print(suan)
# print(np.power(suan,2))
# print(np.sqrt(suan))
# print(np.power(suan,2,out=suan))
#print(suan.mean(0))

"""
矩阵处理
    np.asmatrix(j1) 数组转化成矩阵
    np.vdot(x1,x2) 点积运算
"""
j1 = np.arange(12).reshape([3,4])
j2 = np.asmatrix(j1)
j3 = np.arange(12).reshape([3,4])
j4 = np.asmatrix(j1)
print(j1*j3) #数组对应位置相乘
print(j2*j4.T) #矩阵乘法
print(np.vdot(j1,j3))

 

posted @ 2021-04-12 21:29  一笑任逍遥  阅读(100)  评论(0编辑  收藏  举报