python进阶学习笔记进阶学习笔记-Numpy和和SciPy
什么是什么是Numpy
NumPy(Numerical Python) 是 Python 语言的一个扩展程序库,支持大量的维度数组与矩阵运算,此外也针对数组运算提供大
量的数学函数库。
NumPy 实现了多维同质数组和矩阵,这些数据结构不但能处理数字,还能存放其他由用户定义的记录。通过 NumPy,用户
能对这些数据结构里的元素进行高效的操作。
NumPy 是一个运行速度非常快的数学库,主要用于数组计算,包含:
一个强大的N维数组对象 ndarray
广播功能函数
整合 C/C++/Fortran 代码的工具
线性代数、傅里叶变换、随机数生成等功能
上面提到了ndarray,那ndarray又是什么呢?
NumPy 最重要的一个特点就是其 N 维数组对象 ndarray,它是一系列同类型数据的集合,以 0 下标为开始进行集合中元素的
索引。
ndarray 作用:
ndarray对象是用于存放同类型元素的多维数组。
ndarray 中的每个元素在内存中都有相同存储大小的区域。
ndarray 内部的内容组成:
一个指向数据(内存或内存映射文件中的一块数据)的指针。
数据类型或 dtype,描述在数组中的固定大小值的格子。
一个表示数组形状(shape)的元组,表示各维度大小的元组。
一个跨度元组(stride),其中的整数指的是为了前进到当前维度下一个元素需要”跨过”的字节数。跨度可以是负数,这样会
使数组在内存中后向移动。
继续说回NumPy,使用NumPy,开发人员可以执行以下操作:
数组的算数和逻辑运算。
傅立叶变换和用于图形操作的例程。
与线性代数有关的操作。 NumPy 拥有线性代数和随机数生成的内置函数
NumPy 通常与 SciPy(Scientific Python)和 Matplotlib(绘图库)一起使用, 这种组合广泛用于替代 MatLab,是一个强大
的科学计算环境,有助于我们通过 Python 学习数据科学或者机器学习。
什么是什么是SciPy
SciPy 是一个开源的 Python 算法库和数学工具包,专为线性代数、数值积分和统计学而设计。Scipy是一个用于数学、科学、
工程领域的常用软件包,可以处理插值、积分、优化、图像处理、常微分方程数值解的求解、信号处理等问题。SciPy 包含的
模块有最优化、线性代数、积分、插值、特殊函数、快速傅里叶变换、信号处理和图像处理、常微分方程求解和其他科学与工
程中常用的计算。它用于有效计算Numpy矩阵,使Numpy和Scipy协同工作,高效解决问题。
SciPy 是基于 NumPy 的一个库,它提供了许多的操作numpy的数组的函数。所以SciPy就是用来操作计算Numpy中的数组
的,但Numpy是能够存储数组,本身又能够进行计算,但是计算操作不够全面,所以两个库共同使用。
Numpy的使用的使用
对行列基本操作对行列基本操作
结合例子学习相关用法。
eg:
>>> import numpy #安装 NumPy 之后,导入它(NumPy 并不是 Python 标准库的一部分)
>>> a = numpy.arange(12) #新建一个 0~11 的整数的numpy.ndarry,然后把它打印出来;numpy.arange()用法有在下面说哟~
>>> a
array([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]) #是ndarray对象
>>> type(a)
>>> a.shape #看看查看矩阵或者数组的维数,这个例子中返回的是一个一维的、有 12 个元素的数组
(12,)
>>> a.shape = 3, 4 #把数组变成二维的,然后把它打印出来看看,就是重新设置了行数和列数,然后在原来的序列中重新分配
数据生成ndarray对象
>>> a
array([[ 0, 1, 2, 3],
[ 4, 5, 6, 7],
[ 8, 9, 10, 11]])