• 售前

  • 售后

热门帖子
入门百科

Numpy ndarray 多维数组对象的利用

[复制链接]
你当我是浮夸当z 显示全部楼层 发表于 2021-10-25 19:11:33 |阅读模式 打印 上一主题 下一主题
目录


  • 先容
  • 代码操作
  • 生成ndarray
  • ndarray的数据范例
  • Numpy 数组盘算
  • 根本索引和切片
  • 布尔索引
  • 特别索引
  • 数组的转换和换轴
  • 总结

先容

如今它是Python数值盘算中最为紧张的根本包,将numpy的数组的对象作为数据交互的通用语,一般我们要充实理解好矩阵盘算的原理,这必要你要有一些线性代数的根本知识。在对数据处理、洗濯、构造子集、过滤、变更以及其他盘算的过程快速的进行向量化盘算,后续也会先容R语言,由于R语言就是一个原生态基于向量化盘算的编程语言。
Numpy的核心特性之一就是一个N维数组对象——ndarray,这是一个快速灵活的大型数据集容器,可以进行科学数值盘算。

代码操作
  1. import numpy as np
复制代码
导入好包之后,我们随机生成一个2*3的数组,2行3列的随机数组
  1. data=np.random.randn(2,3)
复制代码

对数组的简单操作
  1. data*10
  2. >>array([[ 9.00839244, -17.67421607, -0.03125454],
  3.   [ 19.79906711, -2.62145167, -12.55106031]])
  4. data+data
  5. >>array([[ 1.80167849, -3.53484321, -0.00625091],
  6.   [ 3.95981342, -0.52429033, -2.51021206]])
  7. data.shape
  8. >>(2, 3)
  9. data.dtype
  10. >>dtype('float64')
复制代码
生成ndarray

生成数组的最简单的方法就是使用array函数,对于传入的范例可以是其他恣意的序列,如你传入一个列表,那么它就会接收这个列表并转换为数组范例,如果传入的是多个列表那么它就会接收多个,在线性代数内里我们叫这个是维度,比如下面的就是一个2行3列的矩阵。
  1. data1=[[1,2,3],[4,5,6]]
  2. arry1=np.array(data1)
  3. arry1
  4. >>array([[1, 2, 3],
  5.   [4, 5, 6]])
  6. arry1.ndim
  7. >>2
  8. arry1.shape
  9. >>2, 3)
复制代码
除了这个我们还可以使用其他的函数来创建数组,比如给定了长度和形状范例就会一次性创建完毕,这里是创建了一个2*3的元素是1的数组
  1. np.ones((2,3))
  2. >>array([[1., 1., 1.],
  3.   [1., 1., 1.]])
复制代码
numpy内里也有像Python range()函数一样的效果——np.arange(),操作效果和Python的range函数有异曲同工之妙,start,stop,step都是可设置的。

对角矩阵生成


ndarray的数据范例

怎样检察数组的数据范例以及怎样进行转换,在numpy内里整型:int32,浮点型:float64.


Numpy 数组盘算

基于numpy的数组盘算在之前我也演示了一些,四则运算,加减乘除,以及一些数组运算,每一个数组与数组之间的盘算都是元素相互对于的,并不是独立的,这个是我们必要理解清晰的地方,有趣的是,我们必要比较两个相同维数的数组,我们可以利用> < = 来检察,它返回的是布尔值。

根本索引和切片

在一维的数组内里,和Python列表内里的所有一样,如果是高维的就有所不同了,就必要利用多重索引了,这里的变量和上面的一样

如果产生了一个三位的数组,比如一个2*2*3的数组,我们按照索引,可以自动索引出来第一个的的数组
对于高维的数组的切片,我们必要注意的是,它的切片原理是按照数组内里的数组进行切片的,比如一个二维数组(2*3*2)的,我们必要取出每个单位数组内里的第一个元素,我们应该怎样做

很明显的我们可以看出多维数组的切片特点:我这里抽象化为列表的特点来表明,比如我们可以把多维数组看做是一个列表内里的多个列表,也就是嵌套列表,然后我们按照索引来取,上述例子就是首先取出两个大的数组,然后从这个两个大的数组内里再去前两个数组,末了取出索引为0的元素,如许层层递减,一步一步的索引是numpy索引的特点,之以是大数据技术之分析与盘算,要用到矩阵盘算的优化,就是泉源于它的分而治之的原理和特点。

布尔索引

其实就是对数组内里的值或元素进行比较,之中返回布尔值即可

上述例子就是产生了一个一维的字符串的数组,然后我们通过比较得出布尔值来获取data的值,天然就获取到data[0]的数组啦
注意在Python内里我们可以用and or来判定,在numpy内里我们必要&(and)|(or)来解决你的需求,记住哟



特别索引

我们必要索引出不同位置的数组,这个时间我们还在一个一个的取出来吗,固然不是我们可以利用特别的索引来解决这个问题,比如下面的例子

下面我们来看看这个特别索引的其他的用法

第一步我们我们按照索引取出对角线的元素,第二的一个我们想要得到一个二维的数组,我们取出一个大数组内里索引位置分别为:1 5 7 2的一维数组然后我们利用索引位置的变更,把元素重新的进行了排序。

数组的转换和换轴

我们随机生成一个0-15的元素构成3*5的一个数组,然后利用.T属性,如果学过线性代数的小伙伴肯定对这个不陌生,矩阵的转置:把行变成列,把列变成行。


总结

在numpy的数组操作我们如今其实并没有发现这个对我们的数据分析有什么用处,这个很正常。就像我们之前学习线性代数,我们发现这个矩阵对我们并没什么用,但是当你使用MATLAB的时间才发现“书到用时方恨少”的原理。
到此这篇关于Numpy ndarray 多维数组对象的使用的文章就先容到这了,更多相关Numpy ndarray 多维数组对象内容请搜刮草根技术分享从前的文章或继承欣赏下面的相关文章希望大家以后多多支持草根技术分享!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x

帖子地址: 

回复

使用道具 举报

分享
推广
火星云矿 | 预约S19Pro,享500抵1000!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

草根技术分享(草根吧)是全球知名中文IT技术交流平台,创建于2021年,包含原创博客、精品问答、职业培训、技术社区、资源下载等产品服务,提供原创、优质、完整内容的专业IT技术开发社区。
  • 官方手机版

  • 微信公众号

  • 商务合作