第4章 NumPy基础:数组和⽮量计算

第4章 NumPy基础:数组和⽮量计算,第1张

NumPy(Numerical Python的简称)是Python数值计算最重要的基础包。


⼤多数提供科学计算的包都是⽤NumPy的数组作为构建基础。



NumPy的部分功能如下:

ndarray,⼀个具有矢量算术运算和复杂⼴播能力的快速且节省空间的多维数组。



⽤于对整组数据进⾏快速运算的标准数学函数(⽆需编写循环)。



⽤于读写磁盘数据的⼯具以及⽤于 *** 作内存映射文件的⼯具。



线性代数、随机数⽣成以及傅⾥叶变换功能。



⽤于集成由C、C++、Fortran等语⾔编写的代码的A C API。


NumPy之于数值计算特别重要的原因之⼀,是因为它可以⾼效 处理⼤数组的数据。


这是因为:

NumPy是在⼀个连续的内存块中存储数据,独⽴于其他 Python内置对象。


NumPy的C语⾔编写的算法库可以 *** 作内存,⽽不必进⾏类型检查或其它前期⼯作。


⽐起Python的内置序列,NumPy数组使⽤的内存更少。



NumPy可以在整个数组上执⾏复杂的计算,⽽不需要Python 的for循环。


4.1 NumPy的ndarray:⼀种多维数组对象

NumPy最重要的⼀个特点就是其N维数组对象(即ndarray),该对象是⼀个快速⽽灵活的⼤数据集容器。


ndarray是⼀个通用的同构数据多维容器,其中的所有元素必须是相同类型的。


每个数组都有⼀个shape(⼀个表示各维度⼤⼩的元组)和⼀个dtype(⼀个⽤于说明数组数据类型的对象)。


以下是一些数组创建函数:

NumPy数组的运算:数组很重要,因为它使你不⽤编写循环即可对数据执⾏批量运算。


NumPy⽤户称其为⽮量化(vectorization)。



基本的索引和切⽚:
切片索引:⼀次传⼊多个切⽚,就像传⼊多个索引那样:
arr[:2,1:],前面的是行索引,后面的是列索引

import numpy as np
array1=[1,3,4],[4,5,6],[7,8,9]
arr=np.array(array1)
# 取前两行后再取第二行  输出array([[4, 5, 6]])
arr[:2][1:]
#⼆维数组切⽚,取前两行后再取后两列,输出array([[3, 4],[5, 6]])
arr[:2,1:]

通过将整数索引和切片混合,可以得到低维度的切片是对某行或某列做切片。


如下得到第三行后两个数,输出array([8, 9])

#一个数字索引和切片的混合
arr[2,1:]

布尔型索引:布尔型数组可⽤于数组索引,长度必须跟被索引的轴长度⼀致,布尔型数组跟切⽚、整数混合使用。



花式索引:⽆论数组是多少维的,花式索引总是⼀维的,花式索引跟切⽚不⼀样,它总是将数据复制到新数组中
数组转置和轴对换:简单的转置可以使⽤arr.T。


对于⾼维数组,transpose需要得到⼀个由轴编号组成的元组才能对这些轴进⾏转置(⽐较费脑⼦):

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/568332.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-04-09
下一篇 2022-04-09

发表评论

登录后才能评论

评论列表(0条)

保存