概要
*
ヒント
この課題で使うPythonの機能 (学習のヒント)
[ edit ]
この課題の解き方 (問題解決のヒント)
[ edit ]
- この課題の解き方 (問題解決のヒント) ....
- 転置行列のサイズは,元の行列からわかりますので,そのサイズの行列を作ってから,値を転記すればよさそうですね.
実行例
*
プログラム例: 本質的な部分 (授業中に順次公開します)
[ edit ]
- 解答例の核心部分は,下記 7 行の関数です.
# ===== 【関数定義】 転置行列を生成し,返す
def transpose_matrix( matrix ):
m = len( matrix )
n = len( matrix[0] )
result_matrix = create_zero_matrix( n, m )
for x in range( m ):
for y in range( n ):
result_matrix[y][x] = matrix[x][y]
return( result_matrix )
- 初期値としてゼロで埋めた行列を生成する関数は,下記 5 行です.
# ===== 【関数定義】 m行n列の行列を二重リストで生成する(要素はすべてゼロ)
def create_zero_matrix( m, n ):
matrix = list()
for x in range( m ):
matrix.append( [0]*n )
return( matrix )
プログラム例: 配布コード (授業中に順次公開します)
[ edit ]
- 以下の解答例を配布します.
- 本質部分は替えませんが,コメントや,メインプログラム部分の実行例を,後々,分かり易く書き換える可能性はあります.
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# ==============================================================================
# * Copyright (c) 2018 IIJIMA, Tadashi
# * (IIJIMA Laboratory, Dept. of Science and Technology, Keio University).
# ==============================================================================
# ソフトウェア工学[03] 基本課題[03]-(006a) BP_03_006a_transpose_matrix.py
# BP(Basic Problem) 03-006a: 転置行列
# 2018-10-17 飯島 正 (iijima@ae.keio.ac.jp)
# ==============================================================================
# ===== 【関数定義】 m行n列の行列を二重リストで生成する(要素はすべてゼロ)
def create_zero_matrix( m, n ):
matrix = list()
for x in range( m ):
matrix.append( [0]*n )
return( matrix )
# ==============================================================================
# ===== 【関数定義】 m行n列の行列(二重リスト)を通し番号で埋める
def set_number_to_matrix( matrix ):
m = len( matrix )
n = len( matrix[0] )
i = 0
for x in range( m ):
for y in range( n ):
matrix[x][y] = i
i += 1
# ==============================================================================
# ===== 【関数定義】 転置行列を生成し,返す
def transpose_matrix( matrix ):
m = len( matrix )
n = len( matrix[0] )
result_matrix = create_zero_matrix( n, m )
for x in range( m ):
for y in range( n ):
result_matrix[y][x] = matrix[x][y]
return( result_matrix )
# ==============================================================================
# ===== 【関数定義】 行列(二重リスト)を表示する
def print_matrix( matrix ):
m = len( matrix )
n = len( matrix[0] )
for x in range( m ):
for y in range( n ):
print( matrix[x][y], end="" )
print( "\t", end="" )
print()
# ==============================================================================
# ===== 【メイン・プログラム】 =====
# ----- オープニングメッセージ -----
print( "転置行列を求める: " )
print( " ※行数と列数を与えると,通し番号を埋めた行列を作り," )
print( " ※転置行列を求める" )
print()
# ----- パラメータの入力 -----
m = int( input( "行列の行数(正の整数)を入力してください>>> " ) );
n = int( input( "行列の列数(正の整数)を入力してください>>> " ) );
print()
print( m, "x", n, "の行列(二重リスト)を作ります", sep="" )
print()
# ----- 通し番号を埋めた行列 -----
matrix = create_zero_matrix( m, n )
set_number_to_matrix( matrix )
print( " 生成した行列(", m, "行", n, "列) :" )
print_matrix( matrix )
print()
print( " 転置行列(", n, "行", m, "列) :" )
tmat = transpose_matrix( matrix )
print_matrix( tmat )
print()
# ==============================================================================