网站建设违法行为,网页打不开百度网盘,电子商务专业怎么样,建设一个直播网站多少钱目录
初识numpy
numpy基本操作
数组的基本操作
ndarray运算
数组间运算
矩阵 初识numpy
Numpy#xff08;Numerical Python#xff09;是一个开源的Python科学计算库#xff0c;用于快速处理任意维度的数组。Numpy支持常见的数组和矩阵操作。对于同样的数值计算任务Numerical Python是一个开源的Python科学计算库用于快速处理任意维度的数组。Numpy支持常见的数组和矩阵操作。对于同样的数值计算任务使用Numpy比直接使用Python要简洁的多。
Numpy使用ndarray对象来处理多维数组该对象是一个快速而灵活的大数据容器。它描述了相同类型的“item”的集合。ndarray 对象是在连续的内存块中分配的因此访问和处理元素的速度比 Python 的原生列表更快以下是ndarray与原生python在效率上的对比
import random
import time
import numpy as npa []
for i in range(100000000):a.append(random.random())
# 通过%time魔法方法查看当前行的代码运行一次所花费的时间
%time suml sum(a)
b np.array(a)
%time sum2 np.sum(b) 机器学习最大的特点就是大量的数据运算那么没有一个快速的解决方案的话那可能现在的py也在机器学习领域达不到好的效果。 Numpy专门针对ndarray的操作和运算进行了设计所以数组的存储效率和输入输出性能远优于Python中的嵌套列表数组越大Numpy的优势就越明显。
从下图我们可以看出ndarray在存储数据的时候数据与地址都是连续的这样就使得批量操作数据元素时速度更快而python原生list就只能通过寻址方式找到下一个元素。 以下是ndarray的常用属性介绍
属性名字属性解释ndarray.shape数组维度的元组ndarray.ndim数组维度ndarray.size数组中的元素数量ndarray.itemsize一个数组元素的长度(字节)ndarray.dtype数组元素的类型
以下根据表格的情况进行下面的测试来验证常用属性的使用 numpy基本操作
以下解释使用numpy的一些基本操作
生成0,1数组我们也可以通过numpy生成特殊的0,1数组操作 生成现有数组通过下面的方式将现有的数组生成ndarray形式
a np.array([[1,2,3], [4,5,6]])
# 从现有的数组中创建
a1 np.array(a)
# 相当于索引的形式并没有真正的创建一个新的
a2 np.asarray(a)
array和asarray的不同在于array是深拷贝而asarray是浅拷贝如下 生成固定范围数组通过numpy的函数生成一个固定范围的数组 生成随机数组生成随机数组采用正态分布的方式进行生成正态分布的方式有以下三种
# 返回一组均匀分布的数
np.random.randn(d0, d1,..., dn)# loc:此概率分布的均值对应着整个分布的中心centre
# scale:此概率分布的标准差对应于分布的宽度scale越大越矮胖scale越小越瘦高
# size:输出的shape默认为None只输出一个值
np.random.normal(loc0.0,scale1.0,sizeNone)# 一个均匀分布[low,high)中随机采样注意定义域是左闭右开即包含low不包含high.
# low:采样下界; high:采样上界; size:输出样本数目 返回值ndarray类型
np.random.uniform(low0.0,high1.0,sizeNone)# 返回指定形状的标准正态分布的数组。
np.random.standard_normal(sizeNone)# 从一个均匀分布中随机采样生成一个整数或N维整数数组。
# 取数范围若high不为None时取[low,high)之间随机整数否则取值[0,low)之间随机整数。
np.random.randint(low,highNone,sizeNone,dtype/)
在正态分布当中我们采用如下的例子 在均匀分布当中我们采用如下的例子 我们也可以模拟一组均值为0方差为1的在某个正态分布内的数据 数组的基本操作
当我们使用numpy生成ndarray数组后如何对数组进行相应的操作呢如下开始讲解
数组的索引切片直接对某维数组进行索引和切片然后返回我们想要的数据 形状修改 修改数组的形状可以采用如下的三种方式
# 返回一个具有相同数据域但shape不一样的视图,行、列不进行互换
ndarray.reshape(shape,order) # 修改数组本身的形状需要保持元素个数前后相同,行、列不进行互换
ndarray.resize(new_shape) # 数组的转置,将数组的行、列进行互换
ndarray.T 类型修改通过如下的方式修改数组的类型 数组去重如果想数组去重的话可以采用如下的方式进行 ndarray运算
通过ndarray运算我们可以筛选符合某一条件的数据以下是使用的一些常用方法
逻辑运算逻辑运算可以采用如下的方式进行筛选数组 将大于60的值赋值为1 通用判断函数通用判断函数可以采用如下的方式进行筛选数组 三目运算符三目运算符可以采用如下的方式进行筛选数组 统计运算统计运算可以采用如下的方式进行筛选数组 数组间运算
我们也可以通过numpy实现数组与数、数组与数组以及数组间运算的广播机制等操作。
数组与数运算可以看如下操作 数组与数组运算数组在进行矢量化运算时要求数组的形状是相等的。当形状不相等的数组执行算术运算的时候就会出现广播机制该机制会对数组进行扩展使数组的shape属性值一样这样就可以进行矢量化运算了。下面通过一个例子进行说明 广播机制实现了时两个或两个以上数组的运算即使这些数组的shape不是完全相同的只需要满足如下任意一个条件即可。 1数组的某一维度等长。 2其中一个数组的某一维度为1。 矩阵 在numpy中进行矩阵相乘的api是 np.matmul、np.dot np.matmul和np.dot的区别 二者都是矩阵乘法。np.matmul中禁止矩阵与标量的乘法。在矢量乘矢量的内积运算中np.matmul与np.dot没有区别。