如何创建numpy二维数组,边框四周的元素都为1,内部元素都为0 ,如下图
要求是输入矩阵的边长n,返回一个nxn的上面的矩阵。昨天面试的题目,感觉答得不好,谢谢老铁们!
1个回答
挺有意思的题目,我自己用两种方法做了一下
第一个方法是生成一个全零的矩阵,然后对四个边重新赋值为1
def func1(n):
arr = np.zeros([n] * 2)
arr[[0, -1], :] = 1
arr[:, [0, -1]] = 1
return arr
第二个方法是生成一个全一的矩阵,然后对中心区域重新赋值为0
def func2(n):
arr = np.ones([n] * 2)
arr[1:-1, 1:-1] = 0
return arr
第二个方法的代码少一行,但是我自己试了一下对于大矩阵,比如n>1000,方法一明显快不少,矩阵越大快的越明显。应该是方法一更好。
比较时间的代码:
t0 = time.time()
for i in range(100):
func1(5000)
t1 = time.time()
for i in range(100):
func2(5000)
t2 = time.time()
print(t1-t0, t2-t1)
1.3369219303131104 13.74842095375061
SofaSofa数据科学社区DS面试题库 DS面经
谢谢老铁的分析
-
Pandas
2019-09-12 14:25
专业!专门注册来给你点赞!
-
Lucien
2021-03-05 17:14