概述
numpy - 通用
1. 忽略所有numpy警告
defaults = np.seterr(all="ignore")
numpy - 数组
1. 创建数组
# 创建一个10*10的0数组
Z = np.zeros((10,10))
print(Z)
# 长度为10的0数组,第4个值为1
Z = np.zeros(10)
Z[3] = 1
# 创建一个从0到8的3*3数组
Z = np.arange(0,9).reshape(3,3)
# 创建一个从0到49的数组
# np.arange 包含左边不包含右边
Z = np.arange(0,50)
# 创建一个5*5的矩阵,每一行值为1~4
Z = np.zeros((5,5))
Z += np.arange(5)
# 创建一个长度为10的数组,值为0~1之间,不包含首尾
Z = np.linspace(0,1,11,endpoint=False)[1:]
# 创建具有x和y坐标的结构化数组,它们覆盖[0,1] x [0,1]区域
Z = np.zeros((5,5), [('x',float),('y',float)])
Z['x'], Z['y'] = np.meshgrid(np.linspace(0,1,5),np.linspace(0,1,5))
2. 数组运算
# 四舍五入
Z = np.random.uniform(-10,+10,10)
print (np.copysign(np.ceil(np.abs(Z)), Z))
# 创建一个长度为10的数组,并做排序操作
Z = np.random.random(10)
Z.sort()
# 对一个数组进行相加操作,并且速度快于np.sum
Z = np.arange(10)
np.add.reduce(Z)
3. 反转数组
Z = np.arange(0,50)
Z = [::-1]
# 第3~8个元素取反
Z = np.arange(11)
Z[(3 < Z) & (Z <= 8)] *= -1
4. 找到数组中的非零元素的索引
Z = [1,2,4,-1,0,3,5]
nz = np.nonzero(Z)
print(nz)
5. 给一个已经存在的数组添加边(填充0)
Z = np.ones((5,5))
Z = np.pad(Z, pad_width=1, mode='constant', constant_values=0)
6. 多个数组操作
# 找出两个数组的共同值
Z1 = np.random.randint(0,10,10)
Z2 = np.random.randint(0,10,10)
print(np.intersect1d(Z1,Z2))
# 判断随机数组A和B是否相等
A = np.random.randint(0,2,5)
B = np.random.randint(0,2,5)
# 比较两个array是不是每一元素都相等,默认在1e-05的误差范围内
equal = np.allclose(A,B)
print(equal)
# 判断是否完全相等,不允许误差存在
equal = np.array_equal(A,B)
print(equal)
7. 提取随机数列整数部分的五种方法
Z = np.random.uniform(0,10,10)
print (Z - Z%1)
print (np.floor(Z))
print (np.ceil(Z)-1)
print (Z.astype(int))
print (np.trunc(Z))
8. 使一个数组不变(只读)
Z = np.zeros(10)
Z.flags.writeable = False
9. 如何在数组中找到最接近给定值的值
Z = np.arange(100)
v = np.random.uniform(0,100)
index = (np.abs(Z-v)).argmin()
print(Z[index])
numpy - 矩阵
1. 创建矩阵
# 3*3的对角
Z = np.eye(3)
# 3*3*3的随机矩阵
Z = np.random.random((3,3,3))
Zmin,Zmax,Zmean = Z.min(),Z.max(),Z.mean() # Z的最小值/最大值/均值
print(Zmin,Zmax,Zmean)
# 创建一个四边为1,中间为0的二维数组
Z = np.ones((10,10))
Z[1:-1,1:-1] = 0
# 创建一个5*5矩阵,对角线下方值为1,2,3,4
Z = np.diag(1 + np.arange(4),k = -1)
#创建一个8*8矩阵,并用棋盘图案填充
Z = np.zeros((8,8),dtype=int)
Z[1::2,::2] = 1
Z[::2,1::2] = 1
# 使用tile函数创建8*8的棋盘矩阵
Z = np.tile(np.array([[0,1],[1,0]]), (4,4))
# 创建一个长度为10的随机矩阵,并将最大值替换为0
Z = np.random.random(10)
Z[Z.argmax()] = 0
# 给定两个数组X和Y,构造柯西矩阵C(Cij = 1 /(xi-yj))
X = np.arange(8)
Y = X + 0.5
C = 1.0 / np.subtract.outer(X, Y)
print(np.linalg.det(C))
2. 矩阵运算
# 矩阵相乘
Z = np.dot(np.ones((5,3)), np.ones((3,2)))
print(Z)
# 求解
Z = np.ones((5,3)) @ np.ones((3,2))
# 标准化处理
Z = np.random.random((5,5))
Z = (Z - np.mean (Z)) / (np.std (Z))
print(Z)
# 给定表示笛卡尔坐标的一个10*2的随机矩阵,将其转换为极坐标
Z = np.random.random((10,2))
X,Y = Z[:,0], Z[:,1]
R = np.sqrt(X**2+Y**2)
T = np.arctan2(Y,X)
print(R)
print(T)
3. 给定一个567的三维矩阵,求100个元素的索引
print(np.unravel_index(99,(5,6,7)))
numpy - 计算类
1. 计算((A+B)*(-A/2))
A = np.ones(3)*1
B = np.ones(3)*2
C = np.ones(3)*3
np.add(A,B,out=B)
np.divide(A,2,out=A)
np.negative(A,out=A)
np.multiply(A,B,out=A)
numpy - 时间类操作
1. 获取特定日期
# 获取昨天、今天、明天的日期
yesterday = np.datetime64('today', 'D') - np.timedelta64(1, 'D')
today = np.datetime64('today', 'D')
tomorrow = np.datetime64('today', 'D') + np.timedelta64(1, 'D')
# 获得2019年7月对应的所有日期
Z = np.arange('2019-07', '2019-08', dtype='datetime64[D]')
(未完待续…)
最后
以上就是舒适电脑为你收集整理的玩转numpy的全部内容,希望文章能够帮你解决玩转numpy所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复