1、 数组的属性
使用numpy生成的数组有以下属性
Shape:返回数组的维度元组,也可用于调整数组的维度;
import numpy as np """创建数组""" print("""创建数组""") arr1 = np.array([[1,2,3,4,5,6],[1,2,3,4,5,6]]) print(arr1) print(arr1.shape) arr1.shape = (6,2) print(arr1)
Reshape:也可用来调整数组的维度,但该方法并不会改变原来数组的维度,只会返回一个改变维度后的数组;
import numpy as np """创建数组""" print("""创建数组""") arr1 = np.array([[1,2,3,4,5,6],[1,2,3,4,5,6]]) print(arr1) print(arr1.shape) arr2 = arr1.reshape((6,2)) print(arr2) print(arr1)
Itemsize:返回数组中每一项所占的字节大小(int8为一字节)
ndim: 返回矩阵的秩
size:返回矩阵元素的个数
dtype:返回矩阵元素的数据类型
2、 numpy切片和索引
ndarray对象可以通过索引或者切片来访问和修改,一共有三种索引方法类型:字段访问,基本切片以及高级索引;
(1)基本索引
基本切片是Python中基本切片概念到N维的扩展,通过将start、stop、step参数提供给内置的slice函数来构造一个Python slice对象,此slice对象被传递给数组来提取数组的一部分;
import numpy as np arr1 = np.arange(0,10) arr2 = slice(1,5,1) print("arr1:",arr1) print("arr2",arr2) print(arr1[arr2])
此外,还可以使用冒号,将切片信息直接传递给ndarray对象;
import numpy as np arr1 = np.arange(0,10) arr2 = slice(1,5,1) print("arr1:",arr1) print("arr2",arr2) print(arr1[arr2]) print(arr1[1:5:1])
使用以下实例进行额外说明:
import numpy as np arr1 = np.arange(0,10).reshape((2,5)) print("arr1:",arr1) print("第一行数据为:",arr1[0]) print("第一列数据为:",arr1[:,0]) print("第一行第一列数据为",arr1[0,0]) print("第一行第一,二列数据为",arr1[0,:2]) print("第一,二行第一,二列数据为",arr1[:2,:2]) print("第一,二行第一,二列数据为",arr1[0:2,0:2]) print("第一,二行所有列中偶数列数据为",arr1[0:2,::2])
(2)高级索引
整数索引在N维数组中比较常用,以二维数组为例,可使用list分别指定行索引的行号以及列索引的列号:
import numpy as np arr1 = np.arange(0,10).reshape((2,5)) print("arr1:",arr1) print(arr1[[0,1],[2,3]])
注:可以切片和整数索引配合一起使用
布尔索引:当结果对象是布尔运算的结果时,将使用此类型的高级索引;
import numpy as np arr1 = np.arange(0,12).reshape((4,3)) print("arr1:",arr1) print(arr1[arr1 > 3])