将数组中的列插入到其他数组的矩阵中

问题描述 投票:0回答:2

假设我有一个 numpy 矩阵数组

A=numpy.array([[[1, 0, 0],[1, 1, 0],[0, 1, 0],[1, 1, 1]],[[1, 0, 0],[1, 1, 1],[0, 0, 1],[1, 0, 1]]])

还有另一个数组

B=np.array([[1,2,3,4],[5,6,7,8]])

我们将其解释为要插入到 A 中的列数组。

我现在如何将 B 中的列插入到 A 中,即获得

[[[1, 1, 0, 0],[2, 1, 1, 0],[3, 0, 1, 0],[4, 1, 1, 1]],[[5, 1, 0, 0],[6, 1, 1, 1],[7, 0, 0, 1],[8, 1, 0, 1]]]

我尝试使用numpy.insert,但不幸的是我没有找到用这种方法解决这个问题。

python numpy numpy-ndarray numpy-slicing
2个回答
0
投票

你可以试试

import numpy as np


A = np.array([[[1, 0, 0],[1, 1, 0],[0, 1, 0],[1, 1, 1]],
              [[1, 0, 0],[1, 1, 1],[0, 0, 1],[1, 0, 1]]])
B = np.array([[1,2,3,4],[5,6,7,8]])


B_reshaped = B.reshape(A.shape[0], A.shape[1], 1)


result = np.concatenate([B_reshaped, A], axis=2)

print(result)

结果

[[[1, 1, 0, 0],[2, 1, 1, 0],[3, 0, 1, 0],[4, 1, 1, 1]],
 [[5, 1, 0, 0],[6, 1, 1, 1],[7, 0, 0, 1],[8, 1, 0, 1]]]

0
投票

您可以向

B
concatenate
添加尺寸:

out = np.concatenate([B[..., None], A], axis=2)

输出:

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

       [[5, 1, 0, 0],
        [6, 1, 1, 1],
        [7, 0, 0, 1],
        [8, 1, 0, 1]]])
© www.soinside.com 2019 - 2024. All rights reserved.