Python--Numpy.s,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=',')