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

02-01 14:03
查看更多