(1)一维数据:列表和数组的比较
相同:一组数据的有序结构
区别:数组的数据类型相同,列表的数据类型可以不同
(2)数据维度的python表示
(1)N维数组对象:ndarray(元素同质)
需求:引入numpy模块
import numpy as np
数组对象可以去掉元素间运算所需的循环,使一维向量更像单个数据
构成:实际的数据、描述这些数据的元数据(数据维度、数据类型等)
需求:使用list生成一个ndarray数组 # ndarray在程序中的别名是:array
list = [[0,1,2,3,4,],
[9,8,7,6,5]]
a = np.array(list)
(2)ndarray对象的属性
需求:使用ndim方法获取数组维度
a.ndim
需求:使用shape方法获取数组尺度
a.shape
需求:使用size方法获取数组元素的个数
a.size
需求:使用dtype方法获取数组元素类型
a.dtype
需求:使用itemsize方法获取数组元素的字节大小
a.itemsize
ndarray数组可以由非同质对象构成
但!非同质ndarray元素为对象类型:dtype=object
(1)从python中的列表、元组等类型
需求:根据列表、数组类型创建数组
x = np.array(list/tuple)
x = np.array(list/tuple,dtype=np.float32)
(2)使用numpy中函数,如:arange,ones,zeros等 # 以下shape代表一个元组
需求:使用arange函数创建一个元素从0到n-1的数组
x = np.arange(n)
需求:使用ones函数创建一个元素全1,shape为(3,6)的数组
x = np.ones((3,6),dtype=np.int32)
需求:使用eye函数创建一个5维的单位矩阵数组
x = np.eye(5)
需求:使用ones_like函数根据数组a的形状创建一个全1数组
x = np.ones_like(a)
需求:使用zeros_like函数根据数组a的形状创建一个全0数组
x = np.ones_like(a)
需求:使用full_like函数根据数组a的形状创建一个全val数组
x = np.full_like(a,val)
需求:使用linspace函数根据起始数据等间距地填充数据 ,默认包含终点
a = np.linspace(1,10,4)
a = np.linspace(1,10,4,endpoint=False)
需求:使用concatenate函数合并数组(元组形式),默认横向拼接
c = np.concatenate((a,b))
(3)从字节流中
(4)从文件中读取特定格式
(1)维度变换
需求:使用reshape方法将形状为(2,3,4)的数组变成形状为(3,8)的数组,但不改变原数组
a = np.ones((2,3,8))
a.reshape((3,8))
# 或者
a = np.ones((2,3,8)).reshape((3,8))
需求:使用resize方法将形状为(2,3,4)的数组变成形状为(3,8)的数组,但改变原数组
a.resize((3,8))
需求:使用flatten方法将数组降至1维数组
a.flatten()
(2)类型变换
需求:使用astype方法转换元素类型
b = a.astype(np.float)
注:astype()方法一定会创建新的数组
(3)数组向列表转换
需求:使用tolist方法实现数组向列表转换
b = a.tolist()
索引:获取数组中特定位置元素的过程(每个维度都有一个索引值,逗号分隔)
切片:获取数组元素子集的过程
a[起始编号:终止编号(不含):步长]
数组与标量之间的运算作用于数组的每一个元素
(1)一元函数
需求:计算数组与元素平均值的商
a = np.arange(24).reshape((2,3,4))
a = a / a.mean()
(2)二元函数
CSV:逗号分隔值
需求:使用savetxt函数存储数组数据
a = np.arange(100).reshape(5,20)
np.savetxt('文件.csv',a,fmt=%d,delimiter=',')
需求:使用loadtxt函数读取数组数据
b = np.loadtxt('文件.csv',delimiter=',',dtype=np.int)
需求:使用tofile方法存储多维数组数据
a = np.arange(100).reshape(5,20,2)
a.tofile('文件.dat',format='%d',sep=',')
需求:使用fromfile函数读取多维数组数据
a.fromfile('文件.dat',dtype=float,count=-1,sep='').reshape=(5,10,2)
a = np.arange(100).reshape(5,10,2)
np.save("a.npy",a)
b = np.load("a.npy")
需求:使用rand函数生成服从均匀分布数组
a = np.random.rand(3,4,5)
需求:使用randn函数生成服从标准正态分布数组
a = np.random.randn(3,4,5)
需求:使用randint函数生成满足一定范围且为整数的数组
a = np.random.randint(100,200,(3,4))
np.random.seed(10)
a = np.random.randint(100,200,(3,4))
np.random.shuffle(a)
np.random.permutation(a)
np.random.choice(a,(3,2),replace=False,p=b/np.sum(b))
a = np.ramdpm.uniform(0,10,(3,4))
b = np.random.normal(10,5,(3,4))
c = np.random.poisson(0.2,(3,4))
np.sum(a)
np.gradient(a)
参考:中国大学mooc 北京理工大学嵩天 Python数据分析与展示