Numpy
数组的运算 多维的数组对象 , ndarray #1. 实际数据 . 2.元数据 描述信息
数组的基础属性 :
1 .ndim #维度
2 .shape #维度数值个数
3 .size #数组内容个数
4 .dtype #数组类型
5 .itemsize #数组内容占内存多少字节
数组的创建 :
# array() 数组内容是: 函数,列表,元组,数据,生成器,序列
import numpy as np
#示例
np.array(range(10)
np.array([1,2,3,4,5])
np.array([[1,2,3,4,5],[6,7,8,9,9]])
# arange() 类似于Python的 range()
np.arange(10) #生成10个整数
np.arange(10.) #生成10个浮点型数值
np.arange(1,10,0.1) #从1到10 每隔0.1生成1个
np.arange(10000) #生成10000,显示前3个,中间省略,显示后面3个
# linspace() 返回在间隔[开始,停止]上 num个均匀的样本
np.linspace(2.0,3.0,num=5) #2.0到3.0 生成5个均匀的值
np.linspace(2.0,3.0,num=5,endpoint=False) #endpoint 默认包头包尾,False不包尾
np.linspace(2.0,3.0,num=5,retstep=True) #retstep 步长,分5个值得步长是多少 默认为False
# zeros()/zeros_like()/ones()/ones_like() #数组生成,zeros 0填充 ones 1填充 *_like()
np.zeros(5) #生成1维5个0 float类型
np.zeros((2,3,2),dtype=np.int) #生成2维,3列,0填充,类型为int32 因为多了个2 所以是3维的,可以任意维
# ↑↑↑ 语法 numpy.zeros(shape ,dtype=float,order='C'): 返回给定形状和类型的新数组,用零填充.shape 是指形状
np.zeros_like(np.arange(10)) #复制arr1 成一个新的数组,同样的新的数组
# eye() 生成正方形的N*N的单位矩阵,对角线为1,其余为0
np.eye(10)
Numpy 的通用函数 基本操作 :
# 数组形状 转置,形状变换,行列转换
# .T / .reshape() / .resize() :返回一个新的数组
arr1.T
arr2 = np.ones((5,10))
arr2.reshape(10,5) #形状改变
np.resize(np.arange(1,13).reshape(3,4),(2,2)) #resize() 改变形状,元素不够填充
# 数组数据复制 .copy() : 数组的副本
arr1.copy()
# 数据类型转换 .astype() 参数 : np.数据类型
arr3.astype(np.int) #返回一个新的数组 int32 , float64
# 数组的堆叠和拆分 hstack() / vstack() / stack()
np.hstack((数组1,数组2)) # 水平堆叠 , 行数要一致
np.vstack((数组1,数组2)) # 垂直堆叠 , 列数要一致
np.stack((数组1,数组2),axis=0|1) # 通过指定维度,轴,需要形状相同
np.hsplit(数组,列数) # 水平拆分--按列
np.vsplit(数组,行数) # 垂直拆分--按行
# 数组的简单运算 矢量化
# + / - / * / 除 / **1 / .mean() / .max() / .min() / .var()方差 / .std() 标准差
# 维度计算, 行,列 上述函数可添加参数 axis=行,列 sort() 参数为数组 数组排序
Numpy 索引和切片 :
ar = np.arange(16).reshape(4,4)
ar[0] #切除一行 切片为下一个维度的一个元素
ar[0][-1] #二次索引,得到其中的一个值
ar[:3] #切出多行
ar[1,1] #类似二次索引
ar[:2 , 1:] #二维切片
# bool 布尔类型索引 False /True
ar = np.arange(12).reshape(3,4)
i = np.array([True,False,True])
j = np.array([False,True,False,False])
ar[i] #选所有为True
ar[i,:] #选行
ar[i,j] #选列
# 基本的布尔类型
# 数组的基本运算bool > < != // %
ar[ar > 5] #选取大于?的数
Numpy 随机数 :
# Numpy随机数 np.random
np.random.normal(size=(5,5)) #符合标准正态分布的?*?样本值
np.random.rand(4,5) # [0,1] 之间的随机样本或N维附件数组 均匀分布
np.random.randn(4,5) #生成一个浮点数或者N维的浮点数组 正态分布
# np.random.randint(low ,high=None,size=None ,size =None,dtype='1')
# 生成一个整数或者N维的整数数组 若high不为None时,取[low,high]之间随机整数
# 否则取值(0,low)之间随机整数,且high必须大于low. dtype参数,只能是int类型
np.random.randint(0,10,size=6) # 取0到9随机整数 ,长度6
np.random.randint(1,100,size=[3,5]) #size 参数[] 为[维度,长度]
Numpy 数据的存储和读取 :
# Numpy 输入输出,数据的存读
np.save(路径及文件.npy, 数组数据)
np.load(路径及文件.npy)
#文本类数据
np.savetxt(路径及文件.txt,数组,delimiter=',') delimiter 数据分割符
np.loadtxt(路径及文件.txt,delimiter=',')
来源:oschina
链接:https://my.oschina.net/u/4259314/blog/3365040