numpy数值计算基础

numpy数值计算基础

数组创建

import numpy as np

np.arange(0,1,0.1) # 开始值,终值,步长 (不含终值)
# array([0. , 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9]) 

np.linspace(0,1,10) # 开始值,终值,个数 (含终值)
# array([0.        , 0.11111111, 0.22222222, 0.33333333, ....., 1.        ])

np.logspace(0,3,4) # lg(n)=0->lg(n)=3 中的n的4个等比数列
# array([   1.,   10.,  100., 1000.])

np.zeros((2,3)) # 全零数组
np.ones((2,3)) # 全1数组
np.eye(3) # 对角线为1的数组
np.diag([1,2,3,4]) # 对角线为1,2,3,4的单位矩阵

随机数生成(random模块)

np.random.seed(n)  #随机种子
# 生成的均为0-1的值
np.random.random(10)
np.random.rand(10,5) # 10*5 均值分布
np.random.randn(10,5) # 正态分布 

np.random.ranint(low,high=None,size=None) # 可规定最大最小值

数组的操作

arr = np.arange(12)
# [ 0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11]
arr = arr.reshape(3,4)
# [[ 0,  1,  2,  3],
#  [ 4,  5,  6,  7],
#  [ 8,  9, 10, 11]]
arr.reval()
arr.flatten()
# [ 0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11]
arr.flatten('F')
# [ 0,  4,  8,  1,  5,  9,  2,  6, 10,  3,  7, 11]

np.hstack((arr,arr))  # 横向组合
#[[ 0,  1,  2,  3,  0,  1,  2,  3],
# [ 4,  5,  6,  7,  4,  5,  6,  7],
# [ 8,  9, 10, 11,  8,  9, 10, 11]]

np.vstack((arr,arr))  # 纵向组合
#	[[ 0,  1,  2,  3],
#    [ 4,  5,  6,  7],
#    [ 8,  9, 10, 11],
#    [ 0,  1,  2,  3],
#    [ 4,  5,  6,  7],
#    [ 8,  9, 10, 11]]

np.concatenate((arr,arr),axis= 0) # 1为横向,0为纵向

np.hsplit(arr,2) #横向分割
#[[0, 1],      [[ 2,  3],    
# [4, 5],		[ 6,  7],
# [8, 9]]		[10, 11]]
np.vsplit(arr,2) #纵向分割
np.spplit(arr,2,axis=1) # 1为横向,0为纵向

numpy矩阵

matr1 = np.mat("1 2 3;4 5 6;7 8 9")
matr1 = np.matrix([[1,2,3],[4,5,6],[7,8,9]])
# [[1, 2, 3],
# [4, 5, 6],
# [7, 8, 9]]
arr1 = np.eye(2)
np.bmat("arr1 arr1;arr1 arr1")  #分块创建矩阵
'''[[1., 0., 1., 0.],
        [0., 1., 0., 1.],
        [1., 0., 1., 0.],
        [0., 1., 0., 1.]]'''

matr1 * matr1 # 叉乘
np.multiply(matr1,matr1) # 点乘
matr1.T #转置
matr1.H #共轭转置
matr1.I #逆转置
matr1.A #返回二维视图

ufunc函数

在数组中使用 +,-,*,/,**,>,<,<=,>=,==,!=,只要两个数组的大小一样,就会对每一个值进行计算。

如果不一样,就会有广播机制进行处理

文件读写

np.save(file,arr,allow_pickle=True,fix_imports=True)  # xxx.npy
np.savez(file,arr,arr2)  # 可保存多个,xxx.npz
np.load(file) #读取成一个 含有一个或多个数组 的数组

np.savetxt(filename,data,fmt='%.18e',delimiter=' ',newline='\n') # 文件名,数据,格式,分隔符,换行符
np.loadtxt(filename,fmt='%.18e',delimiter=' ')
np.genfromtxt(filename,,delimiter=' ') # 功能同上,但面向结构化数组和缺失数据

统计分析

排序

arr.sort() #直接排序
arr.sort(axis=1) #沿着横轴排序
arr.sort(axis=0) #沿着纵轴排序

arr.argsort() # 返回排序后的序号(此序号为原数组时候的序号)
# [10,12,13,11] ---> [0,3,1,2]

np.lexsort((a,b,c)) # 多个键的数组间排序,三个值相加后排序


去重和重复

np.unique(arr) # sorted(set(arr)) 去重

np.tile(A,resp) # 数据,重复几次b    对数组操作
np.repeat(a,repeat,axis=None) # 数据,重复几次,按行(0)or列(1)    对数组中每个数字的操作

常用统计

np.sum(arr) # 求和
arr.sum(axis = 0) #沿着纵轴求和
arr.sum(axis = 1) #沿着横轴求和

np.mean(arr) #求均值
arr.mean(axis = 0) #沿着纵轴求均值
arr.mean(axis = 1) #沿着横轴求均值

np.std(arr) #标准差
np.var(arr) #方差
np.min(arr) #最小值
np.max(arr) #最大值
np.argmin(arr) #最小值索引
np.argmax(arr) #最大值索引

np.cumsum(arr) #每个位置的累计和
np.cumprod(arr) #每个位置的累计积
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值