【python】2次元配列をfor文で2重ループさせたい & 2次元配列の要素数の確認
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です
