Numpy ndarray 多维数组对象的使用
作者:王小王-123 发布时间:2023-08-09 07:01:54
介绍
目前它是Python数值计算中最为重要的基础包,将numpy的数组的对象作为数据交互的通用语,一般我们要充分理解好矩阵计算的原理,这需要你要有一些线性代数的基础知识。在对数据处理、清洗、构造子集、过滤、变换以及其他计算的过程快速的进行向量化计算,后续也会介绍R语言,因为R语言就是一个原生态基于向量化计算的编程语言。
Numpy的核心特征之一就是一个N维数组对象——ndarray,这是一个快速灵活的大型数据集容器,可以进行科学数值计算。
代码操作
import numpy as np
导入好包之后,我们随机生成一个2*3的数组,2行3列的随机数组
data=np.random.randn(2,3)
对数组的简单操作
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都是可设置的。
对角矩阵生成
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属性,如果学过线性代数的小伙伴一定对这个不陌生,矩阵的转置:把行变成列,把列变成行。
来源:https://blog.csdn.net/weixin_47723732/article/details/113742113


猜你喜欢
- 需求: 一台机器上有多个网卡, 如何访问指定的 URL 时使用指定的网卡发送数据呢?$ curl --interface eth0 www.
- 脚本之家已经给大家介绍过range和xrange的区别的基础知识,有兴趣的朋友可以参阅: python中xrange和range的
- 我们想要知道数目的总和,只要通过+就能实现,这是我们在做题上经常用到的符号。但是在python中不能直接使用,我们需要借助一些代码或者函数帮
- —1—如果你对本文的代码感兴趣,可以去 Github (文末提供)里查看。第一次运行的时候会报一个错误(还没找到解决办法),不过只要再运行一
- 前言由于Django是 * 站,所有每次请求均会去数据进行相应的操作,当程序访问量大时,耗时必然会更加明显,最简单解决方式是使用:缓存,缓存
- 关于Python作用域的知识在python作用域有相应的笔记,这个笔记是关于Python闭包及其作用域的详细的笔记如果在一个内部函数里,对一
- 实际上在python中用列表就可以实现动态变量名的管理,python中的列表中可以存储任何类型的元素:listA = [0,"st
- 1. 引言如果能够将我们的无序数据快速组织成更易读的格式,对于数据分析非常有帮助。 Python 提供了将某些表格数据类型轻松转换为格式良好
- 本文实例讲述了Python文件去除注释的方法。分享给大家供大家参考。具体实现方法如下:#!/usr/bin/python # -*- cod
- 我就废话不多说了,直接上代码吧!#!/usr/bin/env python# coding:UTF-8"""@
- 本文实例为大家分享了js实现直播点击飘心效果的具体代码,供大家参考,具体内容如下<!DOCTYPE html><html&
- 你的主页或者你管理的网站有各种密码需要保护,把密码直接放在数据库或者文件中存在不少安全隐患,所以密码加密后存储是最常见的做法。在ASP.NE
- 本文实例讲述了Python3实现计算两个数组的交集算法。分享给大家供大家参考,具体如下:问题:给定两个数组,写一个方法来计算它们的交集。方案
- 说到 IE 的 bug,一个臭名昭著的例子是它对于“盒模型”的错误解释:在 IE5.x 以及 Quirks 模式的 IE6/7 中,将 bo
- 这些日子,几乎每个人都在谈论XML (Extensible Markup Language),但是很少有人真正理解其含义。XML的推崇者认为
- 背景:今天同事写代码,用python读取一个四五百兆的文件,然后做一串逻辑上很直观的处理。结果处理了一天还没有出来结果。问题出在哪里呢?解决
- Python 中提供了对时间日期的多种多样的处理方式,主要是在 time 和 datetime 这两个模块里。一、time 模块time 模
- 当我们想指定每一层的学习率时:optim.SGD([ &
- 问题背景周一上班,首先向同事了解了一下上周的测试情况,被告知在多实例场景下 MySQL Server hang 住,无法测试下去,原生版本不
- 本文实例讲述了JS小游戏的象棋暗棋源码,分享给大家供大家参考。具体如下:游戏运行后如下图所示:Javascript 部分:/** chine