#Numpy 开源 数据计算扩展
import numpy as np
#ndarry
list=[[1,3,5],[2,4,6]]
#list列表,list中的元素的数据类型可以不一样
#array数组,数组中的元素的数据类型必须一样
#list和array都可以根据索引来取其中的元素,但是list不可以进行四则运算,array可以。
#ndarray 多维操作 线性代数
print(type(list))
np_list=np.array(list)
print(type(np_list))
np_list=np.array(list,dtype=np.float)
print(np_list.shape)
print(np_list.ndim)
print(np_list.dtype)
print(np_list.itemsize)
print(np_list.size)
#numpy常用array
print(np.zeros([2,4]))
print(np.ones([3,5]))
#numpy常用操作
print("rand:")
print(np.random.rand(2,4))
print("生成一个随机数:")
print(np.random.rand())
print("randint:")
print(np.random.randint(1,10,3))
print("randn:")#正态分布
print(np.random.randn(2,4))
print("choice:")#生成的随机数在给定的数值中
print(np.random.choice([10,20,30,2,8]))
print("Distribute:")
print(np.random.beta(1,10,12))
print('等差数列,并转换格式:')
print(np.arange(1,11).reshape([2,5]))#5可以省略
print("exp")
print(np.exp(list))#指数函数
print(np.exp2(list))#指数的平方
print(np.sqrt(list))
print(np.sin(list))
print(np.log(list))
newlist=np.array([[[1,2,3,4],
[5,6,7,8],
[9,10,11,12],
[13,14,15,16],
[17,18,19,20],
[21,22,23,24]]])
print(newlist)
print('----------------')
print(newlist.sum())
print('----------------')
print(newlist.sum(axis=1))
print('----------------')
print(newlist.sum(axis=2))
print('----------------')
print(newlist.max(axis=1))
print(newlist.min(axis=0))
list1=np.array([1,2,3,4])
list2=np.array([5,6,7,8])
print(list1+list2)
print(list1-list2)
print(list1/list2)
print(list1*list2)#mul
print(list1**2)#square
print(np.dot(list1.reshape([2,2]),list2.reshape([2,2])))#点乘
print('连接')
print(np.concatenate((list1,list2),axis=0))
print('垂直连接')
print(np.vstack((list1,list2)))
print('水平连接')
print(np.hstack((list1,list2)))
print(np.split(list1,2))
print(np.copy(list1))
#numpy矩阵操作与线性方程组
from numpy.linalg import *
#模块包含线性代数的函数,使用这个模块,可以计算逆矩阵,求特征值,解线性方程组以及求解行列式等。
print(np.eye(3))#单位矩阵
list4=np.array([[1.,2.],[3.,4.]])
print(inv(list4))#求一个方阵的逆矩阵
print(list4.transpose())#矩阵转置
print(det(list4))#求方阵的行列式
print(eig(list4))#特征值
y=np.array([[5.],[8.]])
print("solve")
print(solve(list4,y))#求解