博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
python科学计算库(二)Numpy
阅读量:4222 次
发布时间:2019-05-26

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

介绍

Numpy(Numerical Python)是一个开源的Python科学计算库,用于快速处理任意维度的数组。

Numpy支持常见的数组和矩阵操作。对于同样的数值计算任务,使用Numpy比直接使用Python要简洁的多。

Numpy使用ndarray对象来处理多维数组,该对象是一个快速而灵活的大数据容器。

优势

(1)内存地址连续,所有元素数据类型相同

(2)支持并行化运算
(3)解除了GIL限制

常用属性

属性名字 属性解释
ndarray.shape 数组维度的元组
ndarray.ndim 数组维数
ndarray.size 数组中的元素数量
ndarray.itemsize 一个数组元素的长度(字节)
ndarray.dtype 数组元素的类型

常用方法

1、np.ones(shape, dtype):生成全1的数组

2、np.ones_like(a, dtype):生成和a相同形状的数组
3、np.zeros(shape, dtype):生成全0数组
4、np.zeros_like(a, dtype):生成和a相同形状数组
5、np.array(object, dtype):从列表生成数组
6、np.asarray(a, dtype):如果是列表,则创建新的ndarray,如果a是ndarray,则不会创建新的空间

等差数组

np.linsapce(start, stop, num, endpoint)

np.arange(start,stop, step, dtype)

等比数组

np.logspace(start,stop, num)

生成随机数组

标准正态分布:np.random.randn()

正态分布:np.random.normal(μ,σ)
均匀分布:np.random.rand()
np.random.uniform()
np.random.randint()

形状修改

ndarray.reshape():返回一个新的ndarray

ndarray.resize():在自身修改
ndarray.T:转置

类型修改

ndarray.astype():返回修改类型之后的数组

数组去重

np.unique(ndarray)

数组运算

ndarray > 60:返回布尔类型的数组

ndarray[ndarray>60]:返回为True的元素
np.all():所有都为True返回True
np.any():有一个为Ture返回True
np.where():三元运算符
np.logical_and():逻辑与
np.logical_or():逻辑或

统计函数

方法 说明
min(a, axis) 返回数组的最小值或沿轴的最小值
max(a, axis]) 返回数组的最大值或沿轴的最大值
median(a, axis) 计算沿指定轴的中位数
mean(a, axis, dtype) 沿指定轴计算算术平均值
std(a, axis, dtype) 沿指定轴计算标准偏差
var(a, axis, dtype) 沿指定轴计算标方差
np.argmax(axis=) 最大元素对应的下标
np.argmin(axis=) 最小元素对应的下标

广播机制

数组在进行矢量化运算时,要求数组的形状是相等的。当形状不相等的数组执行算术运算的时候,就会出现广播机制,该机制会对数组进行扩展,使数组的shape属性值一样,这样,就可以进行矢量化运算了。

广播主要发生在两种情况,一种是两个数组的维数不相等,但是它们的后缘维度的轴长相符,另外一种是有一方的长度为1。

eg:

arr1 = np.array([[1, 2, 3, 2, 1, 4], [5, 6, 1, 2, 3, 1]])arr2 = np.array([[1], [3]])print(arr1+arr2)# 结果# array([[2, 3, 4, 3, 2, 5],#        [8, 9, 4, 5, 6, 4]])

矩阵运算

(M行, N列)*(N行, L列) = (M行, L列)

np.matmul():矩阵乘

np.dot:矢量运算是相同,支持矢量和标量

转载地址:http://rbqmi.baihongyu.com/

你可能感兴趣的文章
js窗体消息提醒
查看>>
深入Hibernate映射文件(二)——<hibernate-mapping>的属性
查看>>
详解在Spring中进行集成测试
查看>>
Hibernate 的工具类
查看>>
Struts2中过滤器和拦截器的区别
查看>>
51单片机:led灯闪烁10次后熄灭
查看>>
安卓使用okhttp上传文件,服务端PHP接收
查看>>
51单片机:设计有四位数码管,设计3个按键,k1,k2,k3;k1为模式键,第一次按下,显示初始值,k2,k3有效,k2按一次初值加1,k3按一次初值减1;k1第二次按下停止;k1第三次按下清零;
查看>>
安卓:阿里逆地理编码,可直接拿去用
查看>>
thinkphp源码没问题却各种报错,Namespace declaration statement has to be the very first statement in the script
查看>>
android:dkplayer中ijkplayer延迟长的问题,达到秒开的结果
查看>>
安卓:okhttp请求,获取返回数据
查看>>
安卓:股票筛选及分析系统
查看>>
Effective Java 学习笔记一 Object的方法
查看>>
使用 ctypes 进行 Python 和 C 的混合编程
查看>>
用scikit-learn学习DBSCAN聚类
查看>>
机器学习:Python实现聚类算法(三)之总结
查看>>
使用sklearn做单机特征工程
查看>>
Python 多线程技巧 用threading.Event代替time.sleep()
查看>>
工具】Cmake与gcc的关系
查看>>