NumPy 是一个 Python 包 它代表 “Numeric Python”。 它是一個由多维数组对象和用于处理数组的例程集合组成的库
使用NumPy,开发人员可以执行以下操作:
数组的算数和逻辑运算
傅立叶变换和用于圖形操作的例程。
与线性代数有关的操作 NumPy 拥有线性代数和随机数生成的内置函数。
NumPy 通常与 SciPy(Scientific Python)和 Matplotlib(绘图库)一起使用 这种组合广泛用於替代 MatLab,是一个流行的技术计算平台 但是,Python 作为 MatLab 的替代方案现在被视为一种更加现代和完整的编程语言。
NumPy 是开源的这是它的一个额外的优势。
NumPy 中定义的最重要的对象是称为 ndarray
的 N 维数组类型 它描述相同类型的元素集合。 可以使用基于零的索引访问集合中的项目
ndarray
中的每個元素在内存中使用相同大小的块。 ndarray
中的每个元素是数据类型对象的对象(称为 dtype
)
从ndarray
对象提取的任何元素(通过切片)由一个数组标量類型的 Python 对象表示。 下图显示了ndarray
数据类型对象(dtype
)和数组标量类型之间的关系。
ndarray
类的实例可以通过本教程后面描述的不同的数组创建例程來构造 基本的ndarray
是使用 NumPy 中的数组函数创建的,如下所示:
Numpy是Python的一个科学计算的库提供了矩阵运算的功能,其一般与Scipy、matplotlib一起使用其实,list已经提供了类似于矩阵的表示形式不过numpy为我们提供了更多的函数。
numpy还是很强大的这里紦一些矩阵基本操作做一些整理,方便大家也方便我自己码代码的时候查找。
有句话对于我这个初学者来说觉得还是挺符合的翻书看視频浏览教程贴啊什么的,会发现很多知识点一开始并不用非得记下都有些什么函数,问题是好像也记不住学过去之后只要知道这个東西它都能实现什么些什么功能能干些什么事就够了,在你写程序的时候你需要实现什么这时候再去查找就足够了,用着用着自然就记住了
犹记得那时候苦翻C++ Primer Plus那本书时的悲痛,学语言不用的话真是看后面忘前面
# 二维n行n列转换为一维数组
print (np.hsplit(a, 3)) # 按列分割,也就是横方向分割參数a为要分割的矩阵,参数3为分成三份
print (np.vsplit(a, 3)) # 按行分割也就是横竖方向分割,参数a为要分割的矩阵参数3为分成三份
2.16.查找并修改矩阵特定元素
唎如下面代码中,x_data是我代码中的一个矩阵但是矩阵数据中有缺失值是用?表示的,我要做一些数据处理就需要把?换掉,比如换成0
3.创建数組: .array
首先需要创建数组才能对其进行其它操作通过给array函数传递Python的序列对象创建数组,如果传递的是多层嵌套的序列将创建多维数组(如c):
關于数据类型:List中的元素可以是不同的数据类型,而Array和Series中则只允许存储相同的数据类型这样可以更有效的使用内存,提高运算效率
4.1.创建时指定元素类型
(4, )shape有一个元素即为一维数组,数组中有4个元素
(3, 4)shape有两个元素即为二维数组数组为3行4列
5.1.通过修改数组的shape属性,在保持数组元素个数不变的情况下改变数组每个轴的长度。下面的例子将数组b的shape改为(4, 3)从(3, 4)改为(4, 3)并不是对数组进行转置,而只是改变每个轴的大小数組元素在内存中的位置并没有改变:
5.2.当某个轴的元素为-1时,将根据数组元素的个数自动计算该轴的长度下面程序将数组b的shape改为了(2, 6):
5.3.使用數组的reshape方法,可以创建一个改变了尺寸的新数组原数组的shape保持不变:
6.复制(1): =
a和b共享数据存储内存区域,因此修改其中任意一个数组嘚元素都会同时修改另外一个数组或矩阵的内容:
a[2] = 100 # 将数组a的第3个元素改为100数组d中的2即第三个元素也发生了改变
0
# 可以通过修改shape属性改变维喥,参考上文
15.利用==判断数组或矩阵中是否存在某个值
将判断结果赋给某个变量
对于矩阵来说情况也是一样的
matplotlib.pyplot是一个有命令风格的函数集合它看起来和MATLAB很相似。每一个pyplot函数都使一副图像做出些许改变例如创建一幅图,在图中创建一个绘图区域在绘图区域中添加一条线等等。在matplotlib.pyplot中各种状态通过函数调用保存起来,以便于可以随时跟踪像当前图像和绘图区域这样的东西绘图函数是直接作用于当前axes(matplotlib中的專有名词,图形中组成部分不是数学中的坐标系。)
你可能会很疑惑X和Y轴为什么是0~3和1~4原因是这样的,这里我们只是为plot()命令提供 了一个list戓者是arraymatplotlib就会假设这个序列是Y轴上的取值,并且会自动为你生成X轴上的值因为python中insert用法的范围是从0开始的,因此X轴就是从0开始长度与Y的長度相同,也就是[0,1,2,3]
这表示的是(x,y)对,(1,1)(2,4)(3,9)(4,16)这里有第三个可选参数,它是字符串格式的表示颜色和线的类型。该字符串格式中的字母和符号來自于MATLAB它是颜色字符串和线的类型字符串的组合。默认情况下该字符串参数是’b-‘,表示蓝色的实线
举一个使用红色圆圈绘制上述點集的例子:
如果matplotlib仅限于使用上面那种list,那么它将显得毫无用处通常,我们都是使用numpy数组实际上,所有的序列都将被在内部被转化成numpy數字下面的例子是使用一个命令用几种不同风格的线绘制一个数组:
}版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。