博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
python3 科学计算2
阅读量:7109 次
发布时间:2019-06-28

本文共 2432 字,大约阅读时间需要 8 分钟。

hot3.png

numpy数组操作 

import numpy as npa = np.array([    [1,2,3,4],    [5,6,7,8],    [9,10,11,12]])a.shape(3, 4)
a.shape=4,3aarray([[ 1,  2,  3],       [ 4,  5,  6],       [ 7,  8,  9],       [10, 11, 12]])
a.shape=3,-1 # -1表示自动推断aarray([[ 1,  2,  3,  4],       [ 5,  6,  7,  8],       [ 9, 10, 11, 12]])

生成序列

# 终点不在数组中print(np.arange(0, 1, 0.1))# 将区间等分,终点在数组中print(np.linspace(0, 1, 10))# 终点不在数组中print(np.linspace(0, 1, 10, endpoint=False))# 指数的线性划分,默认10为底,终点在数组中print(np.logspace(0, 3, 4))print(np.logspace(0, 3, 4, base=2))[ 0.   0.1  0.2  0.3  0.4  0.5  0.6  0.7  0.8  0.9][ 0.          0.11111111  0.22222222  0.33333333  0.44444444  0.55555556  0.66666667  0.77777778  0.88888889  1.        ][ 0.   0.1  0.2  0.3  0.4  0.5  0.6  0.7  0.8  0.9][    1.    10.   100.  1000.][ 1.  2.  4.  8.]print(    np.fromfunction(lambda x, y: x + y, [4, 3]))[[ 0.  1.  2.] [ 1.  2.  3.] [ 2.  3.  4.] [ 3.  4.  5.]]

 

反转列表

s = '1234'print(s[::-1])r = slice(None, None, -1)print(s[r])

 

运行时间比较,np的数字类型比Python的原生类型慢

a=3.14b=np.float64(3.14            )%timeit a*a%timeit b*b51.7 ns ± 0.579 ns per loop (mean ± std. dev. of 7 runs, 10000000 loops each)185 ns ± 1.62 ns per loop (mean ± std. dev. of 7 runs, 10000000 loops each)

 

极大似然估计

001530_imZF_2856757.png

import numpy as npimport pylab as pl# 正态分布概率密度计算def normal_pdf(mean, var, x):    return 1 / np.sqrt(2 * np.pi * var) * np.exp(-(x - mean) ** 2 / (2 * var))# 设置随机种子np.random.seed(42)# 产生十个正太样本data = np.random.normal(0, 2.0, 10)# 计算均值和方差mean, var = np.mean(data), np.var(data)print(mean, var)# 在var附近找100个点,var_range = np.linspace(max(var - 4, 0.1), var + 4.0, 100)# 计算这些点的概率密度,由于使用了广播# p是一个二维数组,第0轴对应var_range的各个方差,第一轴对应data的每个元素p = normal_pdf(mean, var_range[:, None], data)print(p)# 极大似然函数的值# 沿着p的第1轴求所有概率的乘积p = np.product(p, axis=1)print(p)# 画出极大似然函数pl.plot(var_range, p)# 画出平行于y轴的竖线pl.axvline(var, 0, 1, c='r')pl.show()

001606_dWhK_2856757.png

where 的使用

x = 10x = 1 if x > 3 else 0x = np.arange(0, 10, 1)print(np.where(x > 3, 1, 0))  # [0 0 0 0 1 1 1 1 1 1]

120036_AowO_2856757.png

 

求和函数,轴的使用,axis表示沿着哪一个轴移动

x = np.array(    [        [1, 2, 3, 4],        [1, 2, 3, 4],        [1, 2, 3, 4],        [1, 2, 3, 4],        [1, 2, 3, 4],    ])print(x)print(np.sum(x, axis=0))print(np.sum(x, axis=1))print(np.sum(x))[[1 2 3 4] [1 2 3 4] [1 2 3 4] [1 2 3 4] [1 2 3 4]][ 5 10 15 20][10 10 10 10 10]50

 

数组转化

a = np.array([    1, 2, 3])print(a)  # 一维数组print(a[:, None])   # 二位列向量 print(a[None, :]) # 二维行向量[1 2 3][[1] [2] [3]][[1 2 3]]

 

转载于:https://my.oschina.net/ahaoboy/blog/1583741

你可能感兴趣的文章
软工第三次团队作业
查看>>
asp.net页面传值
查看>>
LINQ之路 1: LINQ介绍
查看>>
Find Integer HDU - 6441(费马大定理+勾股数)
查看>>
MYCAT分库分表
查看>>
Python基础知识(2)
查看>>
python 集合的操作方法
查看>>
nginx使用负载均衡进行压力测试得到的结论
查看>>
DELL PowerEdge R410系统日志满报错
查看>>
centos7 nginx图片 服务器可以访问ftp用户上传的图片资源的配置
查看>>
Git介绍,安装,Git+Git flow使用
查看>>
转载--关于main函数的作用与标准格式
查看>>
Unity Shader _Time 的单位
查看>>
bzoj1566 [NOI2009]管道取珠
查看>>
Longest Consecutive Sequence <leetcode>
查看>>
设计模式--观察者模式[Observer]
查看>>
Servelt工具类,基于Tomcat8以上版本,提供常见工具方法,包括:cookie查找和删除、文件下载设置、文件上传的表单解析、上传数据和session中数据的比较、多级目录的创建...
查看>>
大型互联网架构
查看>>
DHCP服务器配置--Linux
查看>>
NHibernate不支持复杂的linq,就一定要用DataTable这么低级吗
查看>>