1. 数组的创建
import numpy as np # 创建一维数组 arr1 = np.array([1,2,3,4]) arr1 # 创建一个四行三列的二维数组 arr2 = np.array([[1.1,2,3],[2,3,4],[5,6,7],[6,7,8]]) arr2 # 数组具有同质性,我们创建arr2的时候给他的数字有int,有float,输出数组会发现全都变成了float
2. 数组元素的获取
# 一维数组, 获取索引维2的数组 arr1[2] # 一维数组,获取索引为1 和索引为3的元素 arr1[[1,3]] # 二维数组,获取第三行第三列的数组 arr2[2,2] # 获取第三行的所有元素 arr2[2,:] # 获取第二列所有元素 arr2[:,1] # 获取第2至第4行,2至5列 arr2[1:, 1:] # 获取第一行,最后一行, 第一列,最后一列构成的数组, # 对于这种不连续取行和列的情况我们要使用 np的ix_函数将索引封装一下 arr2[np.ix_([0,-1],[0,-1])]
说明:对于一维数组,可以直接使用列表元素的索引方式,同时还可以给索引传入一个列表,列表里边放你想要的元素的索引值
对于二维数组,要用 [行索引, 列索引] 的方式,行或者列索引可以用 1:3 代表取索引维1 和 2 的行或列
对于二维数组,要取不连续的行或者列索引的情况,要用 np.ix_() 函数封装一下。如 np.ix_([1,3,4],[2,4])
3.数组的常用属性
对于从外部读入的数据,我们可以通过数组的属性来获取数组信息.如维度,行列数,值类型等信息
3.1 读入数据
arr = np.genfromtxt(fname='./a.csv', delimiter=',',skip_header=0, dtype='float') arr # 参数详解 - fname : 指定需要导入的文件路径 - dtype : 指定导入数据的数据类型,默认是float,如果数据集合中有字符串类型,则必须指定为str - delimiter: 指定数据集列分隔符 - skip_header : 默认为0,不跳过首行 # 查看属性: 查看数据结构 type(arr) 查看维度 arr.ndim 查看行列 arr.shape 查看数组元素数据类型 arr.dtype 查看数组元素个数 arr.size
4. 数组的形状处理
数组变形
arr = np.array( [1,2,3],[10,20,30],[100,200,300],[2,3,4] ) # 将arr变成2行6列的数组 arr1 = arr,reshape(2,6) arr.resize(2,6) 以上两种发发都能实现数组的变形,区别是reshape会返回一个新值,而resize在原数据基础上进行修改
数组降维
arr = np.array([[1,10,100],[2,20,200],[3,30,300]]) # 默认行排序降维 arr1 = arr.ravel() arr2 = arr.flatten() arr3 = arr.reshape(-1) # 按列排序 arr1 = arr.ravel(order='F') arr2 = arr.flatten(order='F') arr3 = arr.reshape(-1, order='F')
以上三种方式都能实现降维,区别是 ravel返回的是原数据的复制,对其进行修改不会影响原数据的值,而flatten和reshape是原数据的试图,对其修改会改变原数据的值
数组堆叠
arr1 = np.array([[0,0,0],[0,0,0],[0,0,0]]) # 纵向数组堆叠 np.vstack([arr,arr1]) np.row_stack([arr,arr1])