【python】2次元配列をfor文で2重ループさせたい & 2次元配列の要素数の確認

7月 11, 2020

2次元配列をfor文で2重ループさせたい

以下のコードのようにすれば、2次元配列をfor文を2重ループで処理させることができます。

def main():
    
    list_2d = [[1, 2, 3], [4, 5, 6]]
    print("row ..." + str(len(list_2d)))
    for list in list_2d:
        print("column ... " + str(len(list)))
        for a in list:
            pass


if __name__ == "__main__":
    main()

配列の中身を確認したい場合

以下のコードは、参考です。色々と実験をしてみて、どのように指定すればどのように表示されるのか、理屈ではなく実際にコードを実行してみないとわからない部分があります。こういう実験を何回もやって覚えて行きます。

def main():
    # 配列の中身を確認したい場合
    list_2d = [[1, 2, 3], [4, 5, 6]]
    print("1 ... " + str(list_2d[0:0]))   # 1 ... []
    print("2 ... " + str(list_2d[:0]))    # 2 ... []
    print("3 ... " + str(list_2d[0]))     # 3 ... [1, 2, 3]
    print("4 ... " + str(list_2d[1]))     # 4 ... [4, 5, 6]
    print("5 ... " + str(list_2d))        # 5 ... [[1, 2, 3], [4, 5, 6]]
    print("6 ... " + str(list_2d[:]))     # 6 ... [[1, 2, 3], [4, 5, 6]]
    print("7 ... " + str(list_2d[0:]))    # 7 ... [[1, 2, 3], [4, 5, 6]]


if __name__ == "__main__":
    main()

配列の要素数の確認をしたい場合

pythonで画像解析をする場合、画像は2次元配列なので、以下のようにして幅と高さを確認します。また、list型なのか、ndarray型なのか意識します。

import numpy as np


def main():
    # 配列の要素数の確認をしたい場合
    list_2d = [[1, 2, 3], [4, 5, 6]]
    print("配列の縦の要素数は ... " + str(len(list_2d)) + " 個です")
    print("配列の横の要素数は ... " + str(len(list_2d[0])) + " 個です")
    # 画像の場合
    ndarray_2d = np.array(list_2d)
    print("画像の高さは ... " + str(len(ndarray_2d)) + " pixelです")
    print("画像の幅 は ... " + str(len(ndarray_2d[0])) + " pixelです")
    print("ndarray型の場合は、shapeが使えるので、以下のようにできます")
    width, height = ndarray_2d.shape[:2]
    print("画像の高さは ... " + str(width) + " pixelです")
    print("画像の幅 は ... " + str(height) + " pixelです")


if __name__ == "__main__":
    main()

結果の表示
配列の縦の要素数は … 2 個です
配列の横の要素数は … 3 個です
画像の高さは … 2 pixelです
画像の幅 は … 3 pixelです
ndarray型の場合は、shapeが使えるので、以下のようにできます。
画像の高さは … 2 pixelです
画像の幅 は … 3 pixelです