我有一个数组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 行来执行此操作。
最佳答案
两行
>>> 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[:]
给出整个数组的 View :
array([[-1, -2, -1, 2],
[ 0, -1, 0, 3],
[ 1, 0, 1, 4]])
因此,第二步基本上是这样做的:
y[::2]
array([[-1, -2, -1, 2],
[ 1, 0, 1, 4]])
它沿着第一个维度运作。即行。
关于python - 将 0 插入二维数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34685084/