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

  算法/数据结构/数据库 Python    浏览次数:1532        分享
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回答

怎么对2维的numpy array取整?   2回答

怎么随机打乱一个numpy array?   3回答

numpy里的np.clip函数怎么用?   1回答

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

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

对numpy array求每行的均值   1回答

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

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

python或者numpy求数值的中位数、四分位数   1回答

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

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



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

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

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

我们谢绝答非所问。

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

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