最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

手把手教你使用Python實現(xiàn)多層級數(shù)組矩陣變換

 更新時間:2026年05月09日 08:47:37   作者:IT小本本  
在處理數(shù)據(jù)分析或算法開發(fā)時,我們經(jīng)常會遇到復(fù)雜的數(shù)組重組需求,今天,將通過一個具體的案例,解析如何將一個簡單的一維數(shù)組,按照特定的數(shù)學(xué)邏輯轉(zhuǎn)換成帶分隔符的復(fù)雜矩陣,感興趣的小伙伴可以了解下

在處理數(shù)據(jù)分析或算法開發(fā)時,我們經(jīng)常會遇到復(fù)雜的數(shù)組重組需求。今天,將通過一個具體的案例,解析如何將一個簡單的一維數(shù)組,按照特定的數(shù)學(xué)邏輯轉(zhuǎn)換成帶分隔符的復(fù)雜矩陣。

任務(wù)目標(biāo)

根據(jù)下面要求:

第一層: 每 3 個數(shù)字分為一組。

第二層: 每個大組 {a,b,c}\{a, b, c\}{a,b,c} 變形為 3×23 \times 23×2 的子矩陣。

第三層: 縱向堆疊所有矩陣,并在組間插入全 000 間隔行(末尾除外)

代碼實現(xiàn)

使用 Python 基礎(chǔ)語法來實現(xiàn)這一邏輯。這段代碼清晰地展示了如何通過循環(huán)和條件判斷來精準(zhǔn)控制數(shù)據(jù)結(jié)構(gòu)。

def transform_array(arr):
    # 1. 第一層分組:從左到右,每 3 個數(shù)字為 1 個大組
    groups = [arr[i:i+3] for i in range(0, len(arr), 3)]
    
    final_result = []
    
    for idx, group in enumerate(groups):
        # 提取大組內(nèi)的三個元素 a, b, c
        a, b, c = group
        
        # 2. 第二層變形:生成 3 行 2 列子矩陣
        # 結(jié)構(gòu)為:[a, a+b], [b, b+c], [c, c+a]
        sub_matrix = [
            [a, a + b],
            [b, b + c],
            [c, c + a]
        ]
        
        # 3. 第三層拼接:將子矩陣縱向堆疊
        final_result.extend(sub_matrix)
        
        # 額外規(guī)則:每拼接完一個大組,插入 1 行全 0 分隔行
        # 注意:最后一個大組拼接完成后,末尾不需要加分隔行
        if idx < len(groups) - 1:
            final_result.append([0, 0])
            
    return final_result

# 測試數(shù)據(jù)
arr = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]
result = transform_array(arr)

# 打印結(jié)果
for row in result:
    print(row)

代碼深度解析

1. 靈活的分組切片

代碼第一步使用了列表推導(dǎo)式配合 range(0, len(arr), 3)。這是 Python 處理分塊任務(wù)的標(biāo)準(zhǔn)姿勢,既簡潔又高效。

2. 矩陣構(gòu)造邏輯

在第二層變形中,我們直接利用 Python 列表的解構(gòu)賦值 a, b, c = group。這使得后續(xù)計算 a+ba+ba+bb+cb+cb+c 的邏輯與 image_87af13.png 中的數(shù)學(xué)公式完全對應(yīng),極大提高了代碼的可讀性。

3. 智能分隔符插入

最精妙的地方在于 if idx < len(groups) - 1 的判斷。通過索引檢查,我們確保了全 000 行只出現(xiàn)在大組之間,而不會畫蛇添足地出現(xiàn)在整個矩陣的末尾。

運行結(jié)果展示

執(zhí)行上述代碼后,你將得到一個規(guī)整的矩陣結(jié)構(gòu),每組計算結(jié)果清晰可見,且被 000 完美分隔:

[1, 3]
[2, 5]
[3, 4]
[0, 0]  <-- 組間分隔
[4, 9]
...

這種處理方式不僅適用于本案例,在處理傳感器數(shù)據(jù)流或生成報表結(jié)構(gòu)時也非常實用。

知識擴展

“多層級數(shù)組矩陣”通常指多維嵌套列表(如列表的列表,類似矩陣)或更一般的高維數(shù)組。在 Python 中,處理這類數(shù)據(jù)有兩種方式:

  • 純 Python:使用列表推導(dǎo)、循環(huán)等,適合小規(guī)模或教學(xué)場景。
  • NumPy:提供高效的數(shù)組對象,支持多維數(shù)組的快速變換,適合科學(xué)計算。

下面將分別介紹常見變換操作的實現(xiàn)。

1.純 Python 實現(xiàn)常見矩陣變換

假設(shè)我們有一個二維矩陣(列表的列表):

matrix = [
    [1, 2, 3],
    [4, 5, 6],
    [7, 8, 9]
]

1. 轉(zhuǎn)置(行列互換)

def transpose(matrix):
    return [[matrix[j][i] for j in range(len(matrix))] for i in range(len(matrix[0]))]

print(transpose(matrix))
# [[1, 4, 7], [2, 5, 8], [3, 6, 9]]

2. 順時針旋轉(zhuǎn) 90 度

def rotate_90(matrix):
    return [list(row) for row in zip(*matrix[::-1])]   # 先上下翻轉(zhuǎn),再轉(zhuǎn)置

3. 逆時針旋轉(zhuǎn) 90 度

def rotate_90_counter(matrix):
    return [list(row) for row in zip(*matrix)][::-1]

4. 水平翻轉(zhuǎn)(左右鏡像)

def flip_horizontal(matrix):
    return [row[::-1] for row in matrix]

5. 垂直翻轉(zhuǎn)(上下鏡像)

def flip_vertical(matrix):
    return matrix[::-1]

6. 展平(將多維數(shù)組降為一維)

def flatten(matrix):
    return [item for row in matrix for item in row]

7. 改變形狀(例如 3x3 → 1x9)

def reshape(matrix, new_rows, new_cols):
    flat = flatten(matrix)
    if len(flat) != new_rows * new_cols:
        raise ValueError("新形狀的元素總數(shù)不匹配")
    return [flat[i*new_cols:(i+1)*new_cols] for i in range(new_rows)]

2.NumPy 實現(xiàn)高效矩陣變換(推薦)

NumPy 是 Python 科學(xué)計算的基石,其 ndarray 對象天然支持多維數(shù)組和豐富的變換方法。

import numpy as np

# 創(chuàng)建二維數(shù)組
arr = np.array([[1, 2, 3],
                [4, 5, 6],
                [7, 8, 9]])

1. 轉(zhuǎn)置

arr.T   # 或 np.transpose(arr)

2. 旋轉(zhuǎn)

np.rot90(arr, k=1)      # 順時針旋轉(zhuǎn) 90 度 (k=1 順時針,k=-1 逆時針)

3. 翻轉(zhuǎn)

np.fliplr(arr)   # 水平翻轉(zhuǎn)(左右)
np.flipud(arr)   # 垂直翻轉(zhuǎn)(上下)

4. 展平

arr.flatten()    # 返回新數(shù)組
arr.ravel()      # 返回視圖(更高效)

5. 改變形狀(reshape)

arr_1x9 = arr.reshape(1, 9)   # 或 arr.reshape(1, -1)
arr_3x3 = arr_1x9.reshape(3, 3)

6. 合并多個矩陣

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

np.vstack((a, b))   # 垂直堆疊
np.hstack((a, b))   # 水平堆疊

7. 分割矩陣

# 按列分割成 3 個等寬部分
np.hsplit(arr, 3)
# 按行分割成 3 個等高部分
np.vsplit(arr, 3)

多層級(高維)數(shù)組變換

對于三維及以上數(shù)組(如 [層][行][列]),同樣適用上述方法。

# 創(chuàng)建一個 2x3x4 的三維數(shù)組
tensor = np.arange(24).reshape(2, 3, 4)

# 轉(zhuǎn)置軸順序:將原來的軸 (0,1,2) 重排為 (2,1,0)
tensor.transpose(2, 1, 0)

# 交換兩個軸
np.swapaxes(tensor, 0, 2)

# 展平到一維
tensor.flatten()

到此這篇關(guān)于手把手教你使用Python實現(xiàn)多層級數(shù)組矩陣變換的文章就介紹到這了,更多相關(guān)Python多層級數(shù)組矩陣變換內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評論

嘉定区| 故城县| 晋城| 禹城市| 北京市| 泰顺县| 新密市| 星子县| 普陀区| 碌曲县| 新余市| 沅陵县| 共和县| 乐东| 济宁市| 子洲县| 昭通市| 林州市| 财经| 孙吴县| 沂水县| 阿勒泰市| 邵东县| 安吉县| 瑞昌市| 政和县| 海伦市| 涞源县| 富蕴县| 南涧| 寻甸| 多伦县| 云南省| 田阳县| 洛宁县| 宝坻区| 茂名市| 闽清县| 晴隆县| 平邑县| 南岸区|