您的位置:首页 > 编程语言 > Python开发

Python numpy(ndarray 随机数组 常用操作 线性方程组和矩阵运算)

2017-07-16 19:59 971 查看
关键词:开源 数据计算扩展

功能: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()


2、一些数组
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之间的随机数


3、常用操作

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]))
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息