1.数组的属性 1)numpy.ndarray.ndim 用于返回数组的维数(轴的个数)也称为秩,一维数组的秩为 1,二维数组的秩为 2,以此类推。 2) numpy.ndarray.shape 表示数组的维度,返回一个元组,这个元组的长度就是维度的数目,即 ndim 属性(秩)。 3) numpy.ndarray.size 数组中所有元素的总量,相当于数组的 shape 中所有元素的乘积,例如矩阵的元素总量为行与列的乘积。 4) numpy.ndarray.dtype ndarray 对象的元素类型。 5) numpy.ndarray.itemsize 以字节的形式返回数组中每一个元素的大小。 2.在 ndarray 中所有元素必须是同一类型,否则会自动向下转换, int->float->str
3.副本与视图 在 Numpy 中,尤其是在做数组运算或数组操作时,返回结果不是数组的 副本 就是 视图。 在 Numpy 中,所有赋值运算不会为数组和数组中的任何元素创建副本。 1)numpy.ndarray.copy() 函数创建一个副本。 对副本数据进行修改,不会影响到原始数据,它们物理内存不在同一位置。 4.数组切片操作返回的对象只是原数组的视图。
5.索引与切片 数组索引机制指的是用方括号([])加序号的形式引用单个数组元素,它的用处很多,比如抽取元素,选取数组的几个元素,甚至为其赋一个新值。 1)整数索引 【例】要获取数组的单个元素,指定元素的索引即可。 2)切片索引 切片操作是指抽取数组的一部分元素生成新数组。对 python 列表进行切片操作得到的数组是原数组的副本,而对 Numpy 数据进行切片操作得到的数组则是指向相同缓冲区的视图。 如果想抽取(或查看)数组的一部分,必须使用切片语法,也就是,把几个用冒号**( start:stop:step )**隔开的数字置于方括号内。 为了更好地理解切片语法,还应该了解不明确指明起始和结束位置的情况。 如省去第一个数字,numpy 会认为第一个数字是0;如省去第二个数字,numpy 则会认为第二个数字是数组的最大索引值;如省去最后一个数字,它将会被理解为1,也就是抽取所有元素而不再考虑间隔。 一维数组切片: 二维数组切片: 通过对每个以逗号分隔的维度执行单独的切片,你可以对多维数组进行切片。因此,对于二维数组,我们的第一片定义了行的切片,第二片定义了列的切片。 3)dots 索引 NumPy 允许使用 … 表示足够多的冒号来构建完整的索引列表。 比如,如果 x 是 5 维数组: x[1,2,…] 等于 x[1,2,:,:,:] x[…,3] 等于 x[:,:,:,:,3] x[4,…,5,:] 等于 x[4,:,:,5,:]
4) 整数 数组索引 【例】方括号内传入多个索引值,可以同时选择多个元素。 【例】可以借助切片 : 与整数数组组合。
6)numpy. take(a, indices, axis=None, out=None, mode=‘raise’) 作用:从数组中沿轴获取元素 7)布尔索引 我们可以通过一个布尔数组来索引目标数组。 我们利用这些条件来选择图上的不同点。蓝色点(在图中还包括绿点,但绿点掩盖了蓝色点),显示值 大于0 的所有点。绿色点表示值 大于0 且 小于0.5π 的所有点 6.数组的迭代 除了for循环,Numpy 还提供另外一种更为优雅的遍历方法。 apply_along_axis(func1d, axis, arr) Apply a function to 1-D slices along the given axis.