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

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

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

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

 

Pandas   2019-09-12 08:49



   1个回答 
3

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

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


  相关主题

能直接把csv格式的数据文件读到numpy array里吗?   1回答

如何在numpy array尾部增加一行   2回答

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

删除numpy array中指定的一列   1回答

怎么把torch.tensor转成numpy ndarray?   2回答

调用np.average()时报错TypeError: No loop matching   1回答

删除numpy.array的最后一列   2回答

用np.round的时候报错AttributeError: no attribute 'rint'   1回答

求一个nxn的numpy array的对角线的和?   1回答

numpy中获得tensor的维数?   2回答

怎么把numpy array中的inf换成0?   1回答

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



回答问题时需要注意什么?

我们谢绝在回答前讲“生动”的故事。

我们谢绝“这么简单,你自己想”、“书上有的,你认真看”这类的回答;如果你认为对方的提问方式或者内容不妥,你可以直接忽略该问题,不用进行任何作答,甚至可以对该问题投反对票。

我们谢绝答非所问。

我们谢绝自己不会、硬要回答。

我们感激每一个用户在编写答案时的努力与付出!