Numpy.array的基本操作
首先创建一个一位数组x,再创建一位数组X,通过reshape()方法调整数组的维度。
基本属性
属性ndim用于查看数组的维度。
属性shape也可以同样用来表示维度,但是返回值为元组,表示各个维度的长度。
属性size表示元素个数(数组长度)。
numpy.array数据访问
1.方括号[]+索引的方式
其中索引可以为正数也可以为负数。
对于多维度矩阵可以使用多个方括号来访问。
2.切片
使用:来访问一段距离的元素
:前面的参数默认为从矩阵起始开始访问,后面的参数默认到矩阵终止为止。
同时还可以指定第三个参数,也就是步长(step),通过指定步长可以访问特定元素。
二维数组的访问形式稍微有所区别
例如:访问前两行前三列
解析下面的X切片存取过程,首先X取前两行,然后返回一个列表,再和后面的切片结合相当于再去这个返回列表的前三行,所以结果就如下图所示。
多维数组访问使用在一个方括号内使用,分隔的方式,而不是多个方括号的索引方式。见下图的两种,推荐使用第二种。
当步长为-1时表示将一行数据元素逆转,所以两个-1将行和列都逆转了。
只取某一行或某一列的形式。下图中分别对应只取第一行或者只取第一列。
创建一个X的子矩阵(前两行,前三列),对子矩阵的元素进行修改会发现原矩阵的元素也发生了改变。这是numpy自身的特性,因为处于效率考虑没有创建一个全新的矩阵。同理修改原矩阵的元素,子矩阵也会发生改变。因为原矩阵和子矩阵的引用同一个数组。
想要创建一个和原矩阵的副本(和原矩阵脱离关系),使用copy()函数,此时无论是对X或subX进行修改都不会影响到另一个的矩阵。
3.reshape()方法
reshape()函数用于改变矩阵维度,参数可以是各个维度的长度,也可以包装成元组作为参数进行传递。修改维度并不是发生在原本的矩阵上,观察下面例子就会发现x本身并没有发生改变,只有重新存储起来才会有效。
通过指定参数为-1可以确定固定有多少行或者多少列。**前提是行数或者列数可以被元素个数整除。**下图展示了化为10和10列的方法。