如何用np.repeat将3D矩阵(NxMxV)的内层行重复为Nx2MxV新矩阵?
解决NumPy中3D矩阵内层行重复的问题
你需要将维度为N×M×V的3D矩阵的内层行重复,得到N×2M×V的新矩阵,示例如下:
原始矩阵:
[[[5 1 4]] [[0 9 5]] [[8 0 9]]]
目标矩阵:
[[[5 1 4] [5 1 4]] [[0 9 5] [0 9 5]] [[8 0 9] [8 0 9]]]
你之前尝试的np.repeat(A, 2, axis=0)无法得到预期结果,因为axis=0是在**最外层维度(N维度)**重复元素,输出变成了:
[[[5 1 4]] [[5 1 4]] [[0 9 5]] [[0 9 5]] [[8 0 9]]]
正确解决方案
要实现内层行(对应M维度,也就是第二个维度)的重复,只需将axis参数指定为1即可:
import numpy as np A = np.array([[[5, 1, 4]], [[0, 9, 5]], [[8, 0, 9]]]) result = np.repeat(A, 2, axis=1) print(result)
运行后输出将完全符合你的目标矩阵:
[[[5 1 4] [5 1 4]] [[0 9 5] [0 9 5]] [[8 0 9] [8 0 9]]]
参数说明
axis=0:在最外层维度(N)重复,会增加矩阵的行数axis=1:在中间维度(M)重复,对应你需要的内层行重复axis=2:在最内层维度(V)重复,会将每个元素的内部值重复
内容的提问来源于stack exchange,提问作者amy
相关产品推荐
相关产品推荐

