python基础2

%%%%Numpy概述
特点:科学计算库
import numpy as np
numpy操作
class numpy.ndarray的创建 : array = np.array([1,2,3,4,5])
对个元素加一 :array2 = array + 1 列表则无法简单进行该操作
属性:shape值 :
python基础2_第1张图片
属性:dtype :矩阵里的值的类型
-===-=-=-=-=-=-=-=-=
会自动向下转换类型
属性:
nbytes:总共占多少字节
itmesize:一个值占多少字节
size:元素多少
shape:
ndim:维度
方法:
fill :填充覆盖
索引与切片跟python一样
[1,1]
[1,:]
.copy()
.arange(0,100,10) :0 10 20 … 90
mask = np.array([0,0,0,1,1,1],dytpe =bool)
tang_array[mask]
random_array=np.random.rand(10)
mask = random_array > 0.5
tang_array[mask]
np.where(tang_array >30)
tang_array = np.array([0,0,0,1,1,1],dytpe =np.float32) 类型要加np.
dtype = np.object 可以存储任何类型
2的话:数字2 字符翻倍
tang_array2=np.asarray(tang_array,dtype = np.float32) :
不会改变tang_array ,重新作出了一个
对象的方法:
.astype(np.float32) 将原来的类型改变
.sum(axis = 0)
.prod() 乘积
.min(axis = 0)
.argmin(axis =0)最小值的维度
.argmean(axis = 0) 均值
.std() 标准差
.var() 方差
.clip(2,4) 限制:小于2的值都变成2,大于4的值都变成4
.round() 四舍五入
.round(decimals = 1)在第一个小数上进行四舍五入
类的方法:
np.sum(tang_array)
np.sum(tang_array,axis = 0)按照第一个维度求和
np.sort(tang_array,axis = 0) 排序
np.argsort(tang_array)
np.linspace(0,10,10)
np.searchsorted(tamg_array,values) 往数组插值应该插入的位置
np.lexsort() 先排第几列 然后再按什么顺序排第几列
python基础2_第2张图片

特点:
= :指向相同
所以需要.copy()

%%%%数组形状操作
对象的方法:
.reshape(1,10) 或者改变shape属性值 都可以改变矩阵形状
增加维度[np.newaxis,:] // [:,np.newaxis] // [:,np.newaxis,np.newaxis]
降低无用的维度:tang_array = tang_array.squeeze()
转置:tang_array.transpose() // .T 不改变原始array
拉平:flatten() //ravel()

类的方法:
连接数组: c = np.concatenate((a,b)) 默认按第一个维度拼接,竖着拼
c = np.concatenate((a,b),axis = 1) 横着拼

%%%%数组生成函数

对象的方法:
类的方法:
np.arange(2,20,2)
np.arange(10)
np.linspace(0,10,50) 有头有尾
np.logspace(a,b,5) 默认以10为底数
先把
10^a
10^b
分成5等分,然后在进行取对数
np.meshgrid(x,y)
np.r_[0:10:1] 构造行向量
np.c_[0:10:1] 构造列向量
np.zeros(3)
np.ones((3,3))
np.ones((3,3))*8
np.ones((3,3),dtype =np.float32)
np.empty(6)
np.zeros_like(tang_array) 复制维度
np.identity(5) 单位矩阵

%%%%%四则运算
类的方法:
np.multiply(x,y)
np.dot(x,y) 求内积 维度相同的 求矩阵相乘 3,2 2,4
x == y
x * y
np.logical_and(x,y) // or // not
%%%%%随机模块
np.random.rand(3,2) 都是从0到1
np.random.randint(10,size = (5,4)) 左闭右开 0 ~9
np.random.random_sample()
np.random,randint(0,10,3)
mu,sigma = 0,0.1
np.random.normal(mu,sigma,10) //高斯分布
np.set_printoptions(precision = 2)设置精度
np.random.shuffle(array) 对数组进行洗牌,改变顺序
np.random.seed(0)随机的种子 指定种子后,方便对比试验,rand出来的就不变

%%%%文件读写
python基础2_第3张图片
可直接用data = np.loadtxt(‘tang.txt’,delimiter = ‘,’,skiprows = 1) 分割符默认为空格
skiprows去掉几行
usecols =(0,1,4) :指定使用哪几列

%%%%数组保存
np.savetxt(‘tang4.txt’,tang_array,fmt =’%.2f’,delimiter = ‘,’) 将矩阵写在文件中
np.save(‘tang_array.npy’,tang_array) 用ue打开
tang = np.load(‘tang_arra.npy’)
np.savez(‘tang.npz’,a = tang_array,b=tang_array2) 用压缩文件保存
data = np.load(‘tang.npz’)
data.keys()
data[‘a’]
data[‘b’]

%%%%练习题
print(np.version)
print(help(np.info(np.add())))
倒序 tang_array[::-1]
np.nonzero()
np.pad(tang_array,pad_width = 1,mode = ‘constant’,constant_values = 0) 边界填充
np.unravel_index(100,(6,7,8)) 找到第几个元素
np.intersect1d(z1,z2) 交集
tomorrow=np.datetime64(‘today’,‘D’) + np.timedelta(1,‘D’)
z = np.zeros(5)
z.flags.writeable = False 使这个数组不能被赋值
np.set_printoptions(threshold = 5//np.nan) 全部打印
python基础2_第4张图片
改变类型 z = z.astype(np.float32)
打印数组元素位置坐标与数值
python基础2_第5张图片按照某一列进行排序
python基础2_第6张图片
np.bincount(z)
z[[0,1]] = z[[1,0]]更换两行的位置

python基础2_第7张图片
快速查找TOP K
python基础2_第8张图片
python基础2_第9张图片python基础2_第10张图片

你可能感兴趣的:(python基础)