第1次作业-Numpy练习
1.创建一个边界值为1而内部都是0的数组,图例如下:
[提示:]解此题可以先把所有值都设置为1,这是大正方形;其次,把边界除外小正方形全部设置为0。
本题用到numpy的切片原理。多维数组同样遵循x[start:stop:step]的原理。
[1. 1. 1. 1. 1. 1. 1. 1. 1. 1.]
[1. 0. 0. 0. 0. 0. 0. 0. 0. 1.]
[1. 0. 0. 0. 0. 0. 0. 0. 0. 1.]
[1. 0. 0. 0. 0. 0. 0. 0. 0. 1.]
[1. 0. 0. 0. 0. 0. 0. 0. 0. 1.]
[1. 0. 0. 0. 0. 0. 0. 0. 0. 1.]
[1. 0. 0. 0. 0. 0. 0. 0. 0. 1.]
[1. 0. 0. 0. 0. 0. 0. 0. 0. 1.]
[1. 0. 0. 0. 0. 0. 0. 0. 0. 1.]
[1. 1. 1. 1. 1. 1. 1. 1. 1. 1.]
>>> import numpy as np >>> Z = np.ones((10, 10)) >>> Z[1:9 , 1:9] = 0 >>> print(Z)
2.在数组主对角线上创建一个值为1,2,3,4的5x5矩阵,图例如下:
[1 0 0 0]
[0 2 0 0]
[0 0 3 0]
[0 0 0 4]
>>> import numpy as np >>> Z = np.diag([1, 2, 3, 4,5]) >>> print (Z)
3.数组归一化操作
生成一个随机的5*5矩阵,找出最大值和最小值,然后把最大值和最小值分别用1和0表示,其他值则介于在0和1中间。
>>> import numpy as np >>> a=np.random.random((5,5)) >>> zmin,zmax=a.min(),a.max() >>> a array([[0.22913187, 0.23453449, 0.66414599, 0.56885539, 0.72208001], [0.48844148, 0.14876833, 0.47382164, 0.10778985, 0.56634055], [0.3866183 , 0.95441825, 0.47012269, 0.50781147, 0.75481921], [0.26920394, 0.29367284, 0.95865544, 0.19176201, 0.54763223], [0.77558802, 0.28558687, 0.03488014, 0.73239424, 0.45709264]]) >>> np.where(a == np.max(a)) (array([3], dtype=int64), array([2], dtype=int64)) >>> np.where(a == np.min(a)) (array([4], dtype=int64), array([2], dtype=int64)) >>> a[3,2]=1 >>> a[4,2]=0 >>> a array([[0.22913187, 0.23453449, 0.66414599, 0.56885539, 0.72208001], [0.48844148, 0.14876833, 0.47382164, 0.10778985, 0.56634055], [0.3866183 , 0.95441825, 0.47012269, 0.50781147, 0.75481921], [0.26920394, 0.29367284, 1. , 0.19176201, 0.54763223], [0.77558802, 0.28558687, 0. , 0.73239424, 0.45709264]])