NumPy——Python库

NumPy(Numerical Python)是Python语言的一个扩充程序库。支持高级大量的维度数组与矩阵运算,此外也针对数组运算提供大量的数学函数库。

1 简单的数组创建

import numpy as np;
a=np.array([1,2,3,4])
print(a);

创建二维数组

aaa=np.array([[1,2,3],[11,22.0,33]])
print(aaa)

创建特定数组


bb=np.zeros([3,3])
print(bb)
bb=np.ones([3,3],dtype=np.int64)
print(bb)
bb=np.arange(10).reshape(2,5)
print(bb)
bb=np.arange(0,12,2)
'''从0开始,到12 每步两位,进行输出'''
print(bb)

2 基本的数组操作;这里主要说一下*;这里*代表的是对位相乘;想要实现矩阵乘法需要使用dot()方法。

import numpy as np;
a=np.array([[1,2],[4,5]])
b=np.array([[1,1],[1,1]])
print("----------对位相乘-------------")
print(a*b)
print(a)
print(b)
print("----------矩阵相乘-------------")
print(np.dot(a,b))
print(a.dot(b))

3 其中,ndarray类还实现了许多操作数组的一元方法,如求和、求最大值、求最小值等

a = np.random.random((2,3))
print("---------------常用方法-------------------")
print(a)
print(a.sum())

print(a.min())

print(a.max())

4  简单的数学方法

print("# ---------------exp和sqrt--------------------")
B = np.arange(3)
print(B)                   # [0 1 2]
print(np.exp(B))           # [ 1.   2.71828183  7.3890561 ]
print(np.sqrt(B))          # [ 0.   1.          1.41421356]

5  矩阵的一些变换

print("#---------------------floor向下取整---------------------")
a = np.floor(10*np.random.random((3,4)))
print(a)
print("# ----------------ravel把矩阵拉长-----------------------")
print(a.ravel())
print("# ---------shape定义矩阵的行和宽,与resize用法相同--------")
a.shape = (6, 2)
print(a)
print("# ----------------矩阵转置------------------------------")
print(a.T)
a.resize([2,6])

print(a)
aa=np.array([[1,2],[4,3]])
print(aa.T)

print("# ----------矩阵拼接hstack水平拼接,vstack竖直拼接--------------")
a = np.floor(10*np.random.random((2,2)))
b = np.floor(10*np.random.random((2,2)))

print(np.hstack((a,b)))
print(np.vstack((a,b)))

print("# ----------矩阵切分hsplit水平切分,vsplit竖直切分--------------")
a = np.floor(10*np.random.random((2,12)))
print(a)
print(np.hsplit(a,3))             #把矩阵a水平均匀切分3等分
b=np.hsplit(a,3)
print(b[1])
print(np.hsplit(a,(3,4)))         # 在矩阵a的第3列和第4列后边切分
a = np.floor(10*np.random.random((12,2)))
print(np.vsplit(a,3))             #把矩阵a数值均匀切分3等分

print("# -------------等号赋值a和b其实是一回事,对a进行的任何操作,b也会跟着改变---------")
a = np.arange(12)
b = a                             # =号赋值后,a和b属于同一块区域,对a进行操作,b也发生变化
print(b);print(a);
print("#--------------view共享数据,对a进行除改数据之外任何操作,对c都没影响(浅复制)-------------")
c = a.view()
print(a)
print(c)

print("# --------------------------深复制,a和d完全独立-------------------------------")
d = a.copy()
print(d)
print(a)

numpy还支持一些其他的操作如svd等等。

猜你喜欢

转载自blog.csdn.net/So_that/article/details/83186404