python - 将 0 插入二维数组

标签 python arrays numpy

我有一个数组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/

相关文章:

python - 如何在调用 AWS Lambda 函数期间在有效负载中传递字节数据

python - BeautifulSoup 不适用于特定网站

python - 错误地连接 Pandas 中的列

php - 将关联数组转换为键=>值

javascript - 可以创建对象并将它们推送到二维数组吗?

arrays - 如何根据嵌套键值删除JSONB列中的数组元素?

python - 使用 MNIST 训练模型的 Tensorflow 总是打印错误的数字

python - 为什么 xframe_options_exempt 不适用于我的 Django View ?

python - 如何选择 numpy 数组中的特定列?

numpy - 保留大矩阵乘积的特定元素