numpy
数据计算的基础库
定义了一种基础结构ndarray
多维矩阵操作
import numpy as np
Numpy
keywords: 开源 数据计算扩展
functions: ndarray 多维操作 线性代数
#encoding=utf-8
'''
因为python的数据类型比较灵活,[]内可以放下各种,但每次计算前先要判断所以速度较慢
numpy中可以把list内容指定为某一种数据类型,所以比较快
'''
import numpy as np
from numpy.linalg import *
def main():
lst = [[1, 3, 5], [2, 4, 6]]
print(type(lst))
np_lst=np.array(list)
print(type(np_lst))
np_lst=np.array(lst,dtype=np.float)#属性dtype可指定元素唯一的类型
#bool,int,int8,int16,int32,int64,int128,uint8,uint16,uint32,uint64,uint128,float,float16/32/64,complex64/128,str等
# 其中uint是不带符号数,complex是复数
print(np_lst.shape)#得(2L,3L),表示2行3列
print(np_lst.ndim)#得2,表示维度
print(np_lst.dtype)#得float64,因为float默认是64位的
print(np_lst.itemsize)#得8,因为float64占8个字节
print(np_lst.size)#得6,因为一共有6个元素
#2 numpy常用Array
print(np.zeros([2, 4]))#得2行4列的元素都是0的矩阵,常用作初始化
print(np.ones([3, 5]))#得3行5列的元素都是1的矩阵
print("Rand:")
print(np.random.rand(2,4))#得2行4列随机数矩阵,这里的随机数都是均匀分布的,0~1之间的
print(np.random.rand())#得一个随机数
print("RandInt:")#得一个随机的整数,
print(np.random.randint(1,10,3))#参数不能为空,齐总1,10表范围 第三个参数表示个数
print("Randn:")#得一个标准正态分布的随机数
print(np.random.randn(2,4))#得一个2行4列的正态分布的随机数矩阵
print("Choice:")#得一个在可选范围内的随机
print(np.random.choice([10,20,30]))#在10,20,30这三个数中随机选择一个数
print("Distribute:")#可以得各种分布的数,比如下面
print(np.random.beta(1,10,100))#得alpha=1,beta=10的Beta分布的0到1之间的数字100个
#3 numpy常用操作
print(np.arange(1,11).reshape([2,-1]))#得1到11(含1不含11)的等差数列,reshape为2行5列(其中5可缺省为-1)
lst=np.arange(1,11).reshape([2,-1])
print("Exp:")
print(np.exp(lst))#得e指数操作的结果,lst每个元素为幂指数
print("Exp2:")
print(np.exp2(lst))#得2的指数操作的结果,lst每个元素为幂指数
print("Sqrt:")
print(np.sqrt(lst))#得对lst每个元素进行开平方的结果
print("Sin:")
print(np.sin(lst))#得对lst每个元素进行三角函数的结果
print("Log:")
print(np.log(lst))#得对lst每个元素进行对数的结果
lst=np.array([[[1,2,3,4],
[4,5,6,7]],
[[7,8,9,10],
[10,11,12,13]],
[[14,15,16,17],
[18,19,20,21]]])
print("Sum")
print(lst.sum(axis=0))#axis与数组维度有关系,不写axis时候默认不分维度所有元素相加的和
#axis=0是只对最外层数组(即分成3个数组的相应元素的算法)进行sun操作,结果为[[22 25 28 31] [32 35 38 41]]其中1+7+14=22;2+8+15=25
print(lst.sum(axis=1))#axis=1是再进一层(即分成两个数组相应元素的算法),结果为[[ 5 7 9 11] [17 19 21 23] [32 34 36 38]] 其中1+4=5;2+5=7
print(lst.sum(axis=2))#axis=2是再再进一层,结果为[[10 22] [34 46] [62 78]]其中1+2+3+4=10;4+5+6+7=22
print("Max")
print(lst.max(axis=1))#axis与数组维度有关系,不写axis时候默认不分维度所有元素的最大值
#axis=0,1,2含义和上面类似
print("Min")
print(lst.min(axis=0))
lst1= np.array([10,20,30,40])
lst2= np.array([4, 3, 2, 1])
print("Add")
print(lst1 + lst2)#得[14 23 32 41]
print("Sub")
print(lst1 - lst2) # 得[ 6 17 28 39]
print("Mul")
print(lst1 * lst2) # 得[40 60 60 40]
print("Div")
print(lst1 / lst2) # 得[ 2.5 6.66666667 15. 40. ]
print("Square")
print(lst1**2) # 得[ 100 400 900 1600]
print("Dot")#点乘,即矩阵相乘,a矩阵的第一行元素分别乘以b矩阵的第一列元素 的和为结果的第一行第一列的一个元素
print(np.dot(lst1.reshape([2,2]),lst2.reshape([2,2]))) # 得[[ 80 50] [200 130]]即80=10*4+2*2
print("Concatenate")#给numpy中的array元素追加
print(np.concatenate((lst1,lst2),axis=0)) # 得[10 20 30 40 4 3 2 1]
print("Vstack") # 给numpy中的array元素纵向追加
print(np.vstack((lst1,lst2)))#得[[10 20 30 40] [ 4 3 2 1]]
print("Hstack") # 给numpy中的array元素横向追加
print(np.hstack((lst1, lst2)))#得[10 20 30 40 4 3 2 1]
print("Split") # 给numpy中的array元素分开
print(np.split(lst1,2))#分成2份,得[array([10, 20]), array([30, 40])]
print("Copy") # 给numpy中的array进行拷贝
print(np.copy(lst1))
#4 numpy矩阵操作与线性方程组liner
print("Eye")#线性代数中的单位矩阵
print(np.eye(3))#得[[ 1. 0. 0.][ 0. 1. 0.][ 0. 0. 1.]]
lst=np.array([[1,2],[3,4]])
print("Inv:")#矩阵的逆,AB=BA=E ,则我们称B是A的逆矩阵
print(inv(lst))#得[[-2. 1. ] [ 1.5 -0.5]]
print("T:") # 转置矩阵,将矩阵的行列互换得到的新矩阵称为转置矩阵
print(lst.transpose()) # 得[[1 3] [2 4]]
print("Det:") #求行列式,定义域为det的矩阵A,取值为一个标量,写作det(A)或 | A |
print(det(lst)) # 得-2.0=1*4-2*3(仅对应二阶)
print("Eig") # 特征值(第一个array)和特征向量(第二个array)
print(eig(lst)) # 得(array([-0.37228132, 5.37228132]), array([[-0.82456484, -0.41597356],[ 0.56576746, -0.90937671]]))
y=np.array([[5.],[7.]])
print("Solve")#可以用numpy直接解方程组x+2y=5;3x+4y=7
print(solve(lst,y))#得[[-3.] [ 4.]]
#5 numpy其它应用简介
print("FFT:") # 快速傅里叶变换 (fast Fourier transform),信号处理领域常用到的一个概念
print(np.fft.fft(np.array([1,1,1,1,1,1,1,1]))) # 得[ 8.+0.j 0.+0.j 0.+0.j 0.+0.j 0.+0.j 0.+0.j 0.+0.j 0.+0.j]
print("Coef:") # 皮尔逊相关系数( Pearson correlation coefficient)是数据领域中常用到的系数
# 在统计学中,用于度量两个变量X和Y之间的相关(线性相关),其值介于-1与1之间。
print(np.corrcoef([1,0,1],[0,2,1]))#得[[ 1. -0.8660254] [-0.8660254 1.]]
print("Poly:")#生成一元多次函数
print(np.poly1d([2,1,3]))#得2 x的2次 + 1 x + 3
#登陆官网查更加细致的api
if __name__=='__main__':
main()
numpy
关键词: 开源 数据计算扩展
功能: ndarray 多维操作 线性代数
官网: http://www.numoy.org/
numpy
六大工具:

六大工具之一的NumPy:

numpy的简介
numpy
关键词: 开源 数据计算扩展
功能: ndarray 多维操作 线性代数
官网: http://www.numoy.org/
numpy的作用
numpy的作用
keywords: 开源 数据计算扩展
functions: ndarray 多维操作 线性代数
数据分析用的各种包
numpy官网
numpy
功能:ndarray 多维操作
http://www.numpy.org/