关键词:开源 数据计算扩展
功能:ndarry 多维操作 线性代数
官网:www.numpy.org
4、线性方程组和矩阵运算
5、其它应用
功能:ndarry 多维操作 线性代数
官网:www.numpy.org
安装:
pip install numpy
1、ndarray
import numpy as np
def main():
list = [[1,3,5],[2,4,6]]
print(type(list))
n_list = np.array(list)
print(type(n_list))
n_list = np.array(list,dtype=np.float)
#指定数据类型,bool int int8 int16 int32 int64 int128 uint8 uint16 uint32 ... uint128 float float16 float32 complex64
print(n_list.shape)#(2, 3) 2行3列
print(n_list.ndim)#维数 2
print(n_list.dtype) # 数据类型 float64
print(n_list.itemsize)#数据元素的大小
print(n_list.size)#数据元素的个数
if __name__ == "__main__":
main()
print(np.zeros([2,4]))#生成2行4列初值为0的数组
print(np.ones([3,5]))#生成3行5列初值为1的数组
print("Rand:")
#不带n的为服从均匀分布的随机数
print(np.random.rand(2,4)) #生成2行4列初值为0-1之间的随机数的数组
print(np.random.rand())#生成一个0-1之间的随机数
print(np.random.randint(1,10))#生成一个1-10之间的整数
print(np.random.randint(1, 10,3)) # 生成3个1-10之间的整数
print(np.random.randn()) # 生成一个服从标准正态分布的随机数
print(np.random.randn(2,4)) # 生成2行4列服从标准正态分布的随机数
print(np.random.choice([10,20,30])) #生成从指定集合里面选出的随机数
print("Distribute:")
print(np.random.beta(1,10,3))#生成3个服从beta分布的1-10之间的随机数
print("oprations:")
print(np.arange(1,11))#生成【1,10】之间的数 [ 1 2 3 4 5 6 7 8 9 10]
list2 = np.arange(1,11).reshape([2,5])
print(list2)#将其调整为2行5列 [[ 1 2 3 4 5] [ 6 7 8 9 10]]
print(np.exp(list2))
print(np.exp2(list2))
print(np.sqrt(list2))
print(np.sin(list2))
print(np.log(list2))
list3 = 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(list3.sum())
print(list3.sum(axis=0))
'''
axis=0
[
[1,2,3,4],[4,5,6,7]
]
+
[
[7,8,9,10],[10,11,12,13]
]
+
[
[14,15,16,17],[18,19,20,21]
]
=
[
[1+7+14,2+8+15,3+9+16,4+10+17],[4+10+18,5+11+19,6+12+20,7+13+21]
]
=
[
[22,25,28,31],[32,35,38,41]
]
'''
print(list3.sum(axis=1))
'''
axis=1
[
[1,2,3,4],[4,5,6,7]
]
+
[
[7,8,9,10],[10,11,12,13]
]
+
[
[14,15,16,17],[18,19,20,21]
]
=
[
1+4,2+5,3+6,4+7
]
[
7+10,8+11,9+12,10+13
]
[
14+18,15+19,16+20,17+21
]
=
[ 5 7 9 11]
[17 19 21 23]
[32 34 36 38]
'''
print(list3.sum(axis=2))
'''
axis=2
[
[1,2,3,4],[4,5,6,7]
]
+
[
[7,8,9,10],[10,11,12,13]
]
+
[
[14,15,16,17],[18,19,20,21]
]
=
[
[1+2+3+4,4+5+6+7]
]
[
7+8+9+10,10+11+12+13
]
[
14+15+16+17,18+19+20+21
]
=
[10 22]
[34 46]
[62 78]
'''
# print(list3.sum(axis=3))
#报错
print("类似的:")
print(list3.max(axis=1))
print(list3.min(axis=0))
list4 = np.array([1,2,3,4])
list5 = np.array([5,3,2,3])
print("Add")
print(list4 + list5)
print("ub")
print(list4 - list5)
print("Mul")
print(list4 * list5)
print("Div")
print(list4 / list5)
print("Square")
print(list4**2)
print("DOt")
print(np.dot(list4.reshape([2,2]),list5.reshape(2,2)))
print("向array中追加数据")
print(np.concatenate((list4,list5),axis=0))
print(np.vstack((list4,list5)))
print(np.hstack((list4, list5)))
print("拆分array")
print(np.split(list4,2))
4、线性方程组和矩阵运算
print("线性方程组和矩阵运算")
print(np.eye(3))#生成3介单位矩阵
list6 = np.array([
[1.,2.],[3.,4.]
])
print("矩阵的逆")
print(inv(list6))
print("转置矩阵")
print(list6.transpose())
print("行列式")
print(det(list6))
print("特征值和特征向量")
print(eig(list6))
'''
(array([-0.37228132, 5.37228132]), array([[-0.82456484, -0.41597356],
[ 0.56576746, -0.90937671]]))
第一个array表示特征值,第二个array表示特征向量
'''
print("解方程组")
y = np.array([[5.],[7.]])
print(solve(list6,y))
'''
list6 = np.array([
[1.,2.],[3.,4.]
])
y = np.array([[5.],[7.]])
即
x1 + 2x2 = 5
3x1 + 4x2 = 7
解得x1=-3 x2=4
'''
5、其它应用
print("信号处理FFT")
print(np.fft.fft(np.array([1,1,1,1,1,1,1,1,1,1,1])))
print("相关系数")
print(np.corrcoef([1,0,1],[0,2,1]))