当前位置:  开发笔记 > 编程语言 > 正文

将0插入2d数组

如何解决《将0插入2d数组》经验,为你挑选了1个好方法。

我有一个数组x:

x = [0, -1, 0, 3]

我想要y:

y = [[0, -2, 0, 2],
     [0, -1, 0, 3],
     [0,  0, 0, 4]]

第一行是x-1第二行x,第三行是第三行x+1.所有偶数列索引都为零.

我正在做:

y=np.vstack(x-1, x, x+1)
y[0][::2] = 0
y[1][::2] = 0
y[2][::2] = 0

我以为可能会有一个单行代替4而不是4.



1> Mike Müller..:

两行

>>> x = np.array([0, -1, 0, 3])
>>> y = np.vstack((x-1, x, x+1))
>>> y[:,::2] = 0
>>> y
array([[ 0, -2,  0,  2],
       [ 0, -1,  0,  3],
       [ 0,  0,  0,  4]])

说明

y[:, ::2]

给出了完整的第一维度.即所有行和每个其他条目形成第二个维度,即列:

array([[-1, -1],
       [ 0,  0],
       [ 1,  1]])

这不同于:

y[:][::2]

因为这分两步完成.第一步:

y[:]

给出了整个数组的视图:

array([[-1, -2, -1,  2],
       [ 0, -1,  0,  3],
       [ 1,  0,  1,  4]])

因此,第二步基本上是这样做的:

y[::2]
array([[-1, -2, -1,  2],
       [ 1,  0,  1,  4]])

它沿着第一个维度工作.即行.

推荐阅读
雯颜哥_135
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有