51. 创建一个 5x5 的二维数组,其中边界值为1,其余值为0
1 '''考察numpy中二维数组的切片和利用np.ones()函数生成数组''' 2 import numpy as np 3 Z = np.ones((5,5)) 4 Z[1:4,1:4] = 0#Z[1:-1,1:-1] =0也可以 5 Z
array([[1., 1., 1., 1., 1.], [1., 0., 0., 0., 1.], [1., 0., 0., 0., 1.], [1., 0., 0., 0., 1.], [1., 1., 1., 1., 1.]])
52. 使用数字 0 将一个全为 1 的 5x5 二维数组包围
1 '''考察np.pad()填充阵列''' 2 import numpy as np 3 Z = np.ones((5,5)) 4 Z = np.pad(Z,pad_width=1,mode='constant',constant_values=0) 5 Z
array([[0., 0., 0., 0., 0., 0., 0.], [0., 1., 1., 1., 1., 1., 0.], [0., 1., 1., 1., 1., 1., 0.], [0., 1., 1., 1., 1., 1., 0.], [0., 1., 1., 1., 1., 1., 0.], [0., 1., 1., 1., 1., 1., 0.], [0., 0., 0., 0., 0., 0., 0.]])
具体用法:https://numpy.org/devdocs/reference/generated/numpy.pad.html?highlight=pad#numpy.pad
53. 创建一个 5x5 的二维数组,并设置值 1, 2, 3, 4 落在其对角线下方
1 '''考察np.diag()函数,构造对角线矩阵 2 np.diag(v,k)''' 3 import numpy as np 4 Z = np.diag(1+np.arange(4),k=-1)#1+np.arange(4)生成矩阵[1,2,3,4]一维数组 5 Z
array([[0, 0, 0, 0, 0], [1, 0, 0, 0, 0], [0, 2, 0, 0, 0], [0, 0, 3, 0, 0], [0, 0, 0, 4, 0]])
具体用法:https://numpy.org/devdocs/reference/generated/numpy.diag.html?highlight=diag#numpy.diag
54. 创建一个 10x10 的二维数组,并使得 1 和 0 沿对角线间隔放置
1 '''考察切片''' 2 import numpy as np 3 Z = np.zeros((10,10),dtype=int) 4 Z[1::2,::2] = 1#先处理行,从第1行开始,跳过第0行 5 Z[::2,1::2] = 1#再处理列,从第0列开始 6 Z
array([[0, 1, 0, 1, 0, 1, 0, 1, 0, 1], [1, 0, 1, 0, 1, 0, 1, 0, 1, 0], [0, 1, 0, 1, 0, 1, 0, 1, 0, 1], [1, 0, 1, 0, 1, 0, 1, 0, 1, 0], [0, 1, 0, 1, 0, 1, 0, 1, 0, 1], [1, 0, 1, 0, 1, 0, 1, 0, 1, 0], [0, 1, 0, 1, 0, 1, 0, 1, 0, 1], [1, 0, 1, 0, 1, 0, 1, 0, 1, 0], [0, 1, 0, 1, 0, 1, 0, 1, 0, 1], [1, 0, 1, 0, 1, 0, 1, 0, 1, 0]])
55. 创建一个 0-10 的一维数组,并将 (1, 9] 之间的数全部反转成负数
1 '''数组的索引及反转负数的写法''' 2 import numpy as np 3 Z = np.arange(11) 4 Z[(1 < Z) & (Z <= 9)] *= -1 5 Z
array([ 0, 1, -2, -3, -4, -5, -6, -7, -8, -9, 10])
56. 找出两个一维数组中相同的元素
'''考察np.intersect1d()找到两个数组的交集''' impot numpy as np Z1 = np.random.randint(0,10,10) Z2 = np.random.randint(0,10,10) print("Z1:", Z1) print("Z2:", Z2) np.intersect1d(Z1,Z2)
Z1: [5 2 7 6 7 8 1 5 2 4] Z2: [4 9 4 2 2 9 2 5 1 4] array([1, 2, 4, 5])
具体用法:https://numpy.org/devdocs/reference/generated/numpy.intersect1d.html?highlight=intersect1d#numpy.intersect1d
57. 使用 NumPy 打印昨天、今天、明天的日期
1 '''Datetimes and Timedeltas''' 2 import numpy as np 3 yesterday = np.datetime64('today', 'D') - np.timedelta64(1, 'D') 4 today = np.datetime64('today', 'D') 5 tomorrow = np.datetime64('today', 'D') + np.timedelta64(1, 'D') 6 print("yesterday: ", yesterday) 7 print("today: ", today) 8 print("tomorrow: ", tomorrow)
1 '''Datetimes and Timedeltas''' 2 import numpy as np 3 yesterday = np.datetime64('today', 'D') - np.timedelta64(1, 'D') 4 today = np.datetime64('today', 'D') 5 tomorrow = np.datetime64('today', 'D') + np.timedelta64(1, 'D') 6 print("yesterday: ", yesterday) 7 print("today: ", today) 8 print("tomorrow: ", tomorrow)
1 '''Datetimes and Timedeltas''' 2 import numpy as np 3 yesterday = np.datetime64('today', 'D') - np.timedelta64(1, 'D') 4 today = np.datetime64('today', 'D') 5 tomorrow = np.datetime64('today', 'D') + np.timedelta64(1, 'D') 6 print("yesterday: ", yesterday) 7 print("today: ", today) 8 print("tomorrow: ", tomorrow)
1 '''Datetimes and Timedeltas''' 2 import numpy as np 3 yesterday = np.datetime64('today', 'D') - np.timedelta64(1, 'D') 4 today = np.datetime64('today', 'D') 5 tomorrow = np.datetime64('today', 'D') + np.timedelta64(1, 'D') 6 print("yesterday: ", yesterday) 7 print("today: ", today) 8 print("tomorrow: ", tomorrow)
yesterday: 2019-10-10 today: 2019-10-11 tomorrow: 2019-10-12
具体用法:https://numpy.org/devdocs/reference/arrays.datetime.html?highlight=timedelta64
58. 使用五种不同的方法去提取一个随机数组的整数部分
1 '''提取数组整数部分的方法''' 2 import numpy as np 3 Z = np.random.uniform(0,10,10) 4 print("原始值: ", Z) 5 6 print ("方法 1: ", Z - Z%1) 7 print ("方法 2: ", np.floor(Z)) 8 #https://numpy.org/devdocs/reference/generated/numpy.floor.html?highlight=floor#numpy.floor 9 print ("方法 3: ", np.ceil(Z)-1)#-1是因为这种方法往前取整 10 #https://numpy.org/devdocs/reference/generated/numpy.ceil.html?highlight=ceil#numpy.ceil 11 print ("方法 4: ", Z.astype(int)) 12 print ("方法 5: ", np.trunc(Z)) 13 #https://numpy.org/devdocs/reference/generated/numpy.trunc.html#numpy.trunc
59. 创建一个 5x5 的矩阵,其中每行的数值范围从 1 到 5
1 import numpy as np 2 Z = np.zeros((5,5)) 3 Z += np.arange(1,6)
60. 创建一个长度为 5 的等间隔一维数组,其值域范围从 0 到 1,但是不包括 0 和 1
1 '''np.linspace返回指定间隔的等间隔数字''' 2 import numpy as np 3 Z = np.linspace(0,1,6,endpoint=False)[1:]#0<=N<=1,num=6,endpoint=False:不#包含最后一个值,所以num=5;[1:]切片,数组不包含0 4 Z
具体方法:https://numpy.org/devdocs/reference/generated/numpy.linspace.html?highlight=linspace#numpy.linspace