如何创建numpy二维数组,边框四周的元素都为1,内部元素都为0 ?

  算法/数据结构/数据库 Python    浏览次数:10046        分享
0

如何创建numpy二维数组,边框四周的元素都为1,内部元素都为0 ,如下图

要求是输入矩阵的边长n,返回一个nxn的上面的矩阵。昨天面试的题目,感觉答得不好,谢谢老铁们!

 

Pandas   2019-09-12 08:49



   1个回答 
4

挺有意思的题目,我自己用两种方法做了一下

第一个方法是生成一个全零的矩阵,然后对四个边重新赋值为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面经

houherui   2019-09-12 09:47

谢谢老铁的分析 - Pandas   2019-09-12 14:25
专业!专门注册来给你点赞! - Lucien   2021-03-05 17:14


  相关讨论

怎么获得numpy array每行最小值的index?

怎么用numpy生成一个三维的tensor?

怎么对2维的numpy array取整?

numpy里tile函数是怎么用的?

numpy array里怎么用fillna填充nan的值?

'numpy.ndarray' object has no attribute 'head'

numpy里的np.newaxis有什么用?

删除numpy array中指定的一列

numpy.full这个函数有什么用?

numpy array中元素的个数?

  随便看看

人工神经网络有哪些常用的激活函数?

numpy.full这个函数有什么用?

NLP里的OOV是什么意思?

为什么矩阵的二范数和向量的二范数的定义不同?

AIC可以是负数吗?