如何使用Numpy将矩阵转换为指定逆序排列的目标矩阵?
使用Numpy实现矩阵的双向反转
要实现将矩阵行倒序排列且每行元素也倒序的需求,有两种简洁的实现方式:
方法一:使用切片操作(推荐)
Numpy的切片语法[::-1]可以快速实现维度的反转,组合两个维度的切片即可完成目标转换:
import numpy as np # 定义原矩阵(以示例小矩阵为例) mat = np.array([ [1,2,3,4], [5,6,7,8], [9,10,11,12], [13,14,15,16] ]) # 执行双向反转 result = mat[::-1, ::-1] print(result)
输出结果:
[[16 15 14 13] [12 11 10 9] [ 8 7 6 5] [ 4 3 2 1]]
切片说明
[::-1]在第一个维度(行):将矩阵的行顺序完全颠倒[::-1]在第二个维度(列):将每行的元素顺序完全颠倒
方法二:使用np.flip函数
通过指定翻转的轴,同时反转行和列:
result = np.flip(mat, axis=(0, 1))
该方法与切片操作效果完全一致,适合需要显式指定翻转维度的场景。
针对你提供的大矩阵的实现
直接将上述方法应用到你的矩阵即可:
import numpy as np # 你的原始矩阵 mat = np.array([ [ 1.92982258e+00, 1.96782439e+00, 2.00233048e-01, 3.95128552e-01, 4.21665915e-01, -1.10885581e-01, 3.15967524e-01, 1.86851601e-01], [ 5.82581567e-01, 3.85242821e-01, 6.52345512e-01, 6.96774921e-01, 4.46925274e-01, 1.10208991e-01, -1.78544580e-02, 2.63118328e-01], [ 1.18591189e-01, -8.87084649e-02, 3.35701398e-01, 3.81145692e-01, 2.11622312e-02, 3.10028567e-01, 2.04480529e-01, 4.45985566e-01], [ 5.59840625e-01, 2.01962111e-01, 5.34994738e-01, 2.48421290e-01, 2.42632687e-01, 2.13238611e-01, 3.96632085e-01, 4.94549692e-01], [-7.69809051e-02, -3.00706661e-04, 1.44790257e-01, 3.49158021e-01, 1.10096226e-01, 2.03164938e-01, -3.45361600e-01, -3.33408510e-02], [ 2.33273192e-01, 4.39144490e-01, -6.11938054e-02, -6.93128853e-02, -9.55871298e-02, -1.97338746e-02, -6.54788754e-02, 2.81574199e-01], [ 6.61742595e-01, 4.04149752e-01, 2.33536310e-01, 8.86332882e-02, -2.21808751e-01, -5.48789656e-03, 5.49503834e-01, -1.22011728e-01], [-9.58502481e-03, 2.36994437e-01, -1.28777627e-01, 3.99751917e-01, -1.92452263e-02, -2.58119080e-01, 3.40399940e-01, -2.20455571e-01] ]) # 执行转换 result = mat[::-1, ::-1] print(result)
输出即为你需要的双向反转后的矩阵。
内容的提问来源于stack exchange,提问作者Nobody
相关产品推荐
相关产品推荐

