Numpy ndarray 多维数组对象的使用


Posted in Python onFebruary 10, 2021

介绍

目前它是Python数值计算中最为重要的基础包,将numpy的数组的对象作为数据交互的通用语,一般我们要充分理解好矩阵计算的原理,这需要你要有一些线性代数的基础知识。在对数据处理、清洗、构造子集、过滤、变换以及其他计算的过程快速的进行向量化计算,后续也会介绍R语言,因为R语言就是一个原生态基于向量化计算的编程语言。

Numpy的核心特征之一就是一个N维数组对象——ndarray,这是一个快速灵活的大型数据集容器,可以进行科学数值计算。

代码操作

import numpy as np

导入好包之后,我们随机生成一个2*3的数组,2行3列的随机数组

data=np.random.randn(2,3)

Numpy ndarray 多维数组对象的使用

对数组的简单操作

data*10
 
>>array([[ 9.00839244, -17.67421607, -0.03125454],
  [ 19.79906711, -2.62145167, -12.55106031]])
 
data+data
 
>>array([[ 1.80167849, -3.53484321, -0.00625091],
  [ 3.95981342, -0.52429033, -2.51021206]])
 
data.shape
 
>>(2, 3)
 
data.dtype
 
>>dtype('float64')

生成ndarray

生成数组的最简单的方法就是使用array函数,对于传入的类型可以是其他任意的序列,如你传入一个列表,那么它就会接收这个列表并转换为数组类型,如果传入的是多个列表那么它就会接收多个,在线性代数里面我们叫这个是维度,比如下面的就是一个2行3列的矩阵。

data1=[[1,2,3],[4,5,6]]
 
arry1=np.array(data1)
 
arry1
 
>>array([[1, 2, 3],
  [4, 5, 6]])
 
arry1.ndim
 
>>2
 
arry1.shape
 
>>2, 3)

除了这个我们还可以使用其他的函数来创建数组,比如给定了长度和形状类型就会一次性创建完毕,这里是创建了一个2*3的元素是1的数组

np.ones((2,3))
>>array([[1., 1., 1.],
  [1., 1., 1.]])

numpy里面也有像Python range()函数一样的效果——np.arange(),操作效果和Python的range函数有异曲同工之妙,start,stop,step都是可设置的。

Numpy ndarray 多维数组对象的使用

对角矩阵生成

Numpy ndarray 多维数组对象的使用

ndarray的数据类型

如何查看数组的数据类型以及如何进行转换,在numpy里面整型:int32,浮点型:float64.

Numpy ndarray 多维数组对象的使用

Numpy 数组计算

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

基础索引和切片

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

Numpy ndarray 多维数组对象的使用

如果产生了一个三位的数组,比如一个2*2*3的数组,我们按照索引,可以自动索引出来第一个的的数组

对于高维的数组的切片,我们需要注意的是,它的切片原理是按照数组里面的数组进行切片的,比如一个二维数组(2*3*2)的,我们需要取出每个单位数组里面的第一个元素,我们应该如何做

Numpy ndarray 多维数组对象的使用

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

布尔索引

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

Numpy ndarray 多维数组对象的使用

上述例子就是产生了一个一维的字符串的数组,然后我们通过比较得出布尔值来获取data的值,自然就获取到data[0]的数组啦

注意在Python里面我们可以用and or来判断,在numpy里面我们需要&(and)|(or)来解决你的需求,记住哟

Numpy ndarray 多维数组对象的使用

Numpy ndarray 多维数组对象的使用

特殊索引

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

Numpy ndarray 多维数组对象的使用

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

Numpy ndarray 多维数组对象的使用

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

数组的转换和换轴

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

Numpy ndarray 多维数组对象的使用

总结

在numpy的数组操作我们现在其实并没有发现这个对我们的数据分析有什么用处,这个很正常。就像我们之前学习线性代数,我们发现这个矩阵对我们并没什么用,但是当你使用MATLAB的时候才发现“书到用时方恨少”的道理。

到此这篇关于Numpy ndarray 多维数组对象的使用的文章就介绍到这了,更多相关Numpy ndarray 多维数组对象内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
python选择排序算法实例总结
Jul 01 Python
python轻松查到删除自己的微信好友
Jan 10 Python
Python验证文件是否可读写代码分享
Dec 11 Python
python实现数据写入excel表格
Mar 25 Python
python3使用SMTP发送HTML格式邮件
Jun 19 Python
django框架之cookie/session的使用示例(小结)
Oct 15 Python
Python3将数据保存为txt文件的方法
Sep 12 Python
python实现画出e指数函数的图像
Nov 21 Python
python3 使用Opencv打开USB摄像头,配置1080P分辨率的操作
Dec 11 Python
Tensorflow设置显存自适应,显存比例的操作
Feb 03 Python
pytorch中 gpu与gpu、gpu与cpu 在load时相互转化操作
May 25 Python
使用python将HTML转换为PDF pdfkit包(wkhtmltopdf) 的使用方法
Apr 21 Python
Python将QQ聊天记录生成词云的示例代码
Feb 10 #Python
python利用文件时间批量重命名照片和视频
Feb 09 #Python
python opencv实现图像配准与比较
Feb 09 #Python
python urllib和urllib3知识点总结
Feb 08 #Python
Python3.9.1中使用match方法详解
Feb 08 #Python
python读取excel数据并且画图的实现示例
Feb 08 #Python
Python爬取某平台短视频的方法
Feb 08 #Python
You might like
PHP下利用header()函数设置浏览器缓存的代码
2010/09/01 PHP
PHP中通过fopen()函数访问远程文件示例
2014/11/18 PHP
详解EventDispatcher事件分发组件
2016/12/25 PHP
JavaScript定义类的几种方式总结
2014/01/06 Javascript
JavaScript中的some()方法使用详解
2015/06/09 Javascript
jQuery解决$符号命名冲突
2016/06/18 Javascript
jQuery实现动态生成表格并为行绑定单击变色动作的方法
2017/04/17 jQuery
AngularJS实现单一页面内设置跳转路由的方法
2017/06/28 Javascript
微信小程序chooseImage的用法(从本地相册选择图片或使用相机拍照)
2018/08/22 Javascript
深入理解NodeJS 多进程和集群
2018/10/17 NodeJs
js实现简单模态框实例
2018/11/16 Javascript
你可能从未使用过的11+个JavaScript特性(小结)
2020/01/08 Javascript
JavaScript实现栈结构Stack过程详解
2020/03/07 Javascript
javascript 设计模式之享元模式原理与应用详解
2020/04/08 Javascript
angula中使用iframe点击后不执行变更检测的问题
2020/05/10 Javascript
如何检测JavaScript中的死循环示例详解
2020/08/30 Javascript
Vue项目打包部署到apache服务器的方法步骤
2021/02/01 Vue.js
[34:39]Secret vs VG 2018国际邀请赛淘汰赛BO3 第二场 8.23
2018/08/24 DOTA
python 爬虫出现403禁止访问错误详解
2017/03/11 Python
Python 专题五 列表基础知识(二维list排序、获取下标和处理txt文本实例)
2017/03/20 Python
分享一下如何编写高效且优雅的 Python 代码
2017/09/07 Python
Python应用领域和就业形势分析总结
2019/05/14 Python
Pyqt5 实现跳转界面并关闭当前界面的方法
2019/06/19 Python
django创建最简单HTML页面跳转方法
2019/08/16 Python
python代码如何实现余弦相似性计算
2020/02/09 Python
Python logging模块进行封装实现原理解析
2020/08/07 Python
python BeautifulSoup库的安装与使用
2020/12/17 Python
UGG雪地靴德国官网:UGG德国
2016/11/19 全球购物
GAP阿联酋官网:GAP UAE
2017/11/30 全球购物
经济管理自荐书
2014/06/09 职场文书
涉及车辆房产分割的离婚协议书范文
2014/10/12 职场文书
个人诉讼委托书范本
2014/10/17 职场文书
2015年高校就业工作总结
2015/05/04 职场文书
同学会感言
2015/07/30 职场文书
MySQL系列之五 视图、存储函数、存储过程、触发器
2021/07/02 MySQL
ubuntu下常用apt命令介绍
2022/06/05 Servers