Python(numpyを利用した九九計算)

pythonのモジュールに行列計算を扱うことができるnumpyというものがあります。標準ではインストールされていないのでwindowsではコマンドプロンプトから「pip install numpy」を入力、実行してください。

ちなみに「pip」はパッケージ管理ツールで、「PyPI」という公開Pythonパッケージが登録されているパッケージリポジトリから「pip」コマンドを使って、手軽にインストールすることができます。

以前投稿したPython(PyPIパッケージの利用)では「pip install pillow qrcode」
Python(pygameでゲームパッド入力)では「pip install pygame」してます。
またpipやパッケージのアップデートでは「pi install -U pip」を実行するとアップデート可能です。
削除する場合は「pip uninstall (パッケージ名)」です。

import numpy as np
v = np.matrix(range(1,10))
print(v)

print(v[0])
print(v[0,[0]])

print(np.transpose(v))
print(np.transpose(v)*v)

print(v * np.transpose(v))

xs=[i**2 for i in range(1,10)]
print(xs)

def test(xs):
    tmp = 0
    for i in xs:
        tmp += i
    print(tmp)

test(xs)

numpyはいろいろ計算機能がありますが、今回は簡単に行の作成を np .matrix(range(1,10))メソッドで(1*9)の行列を作成。
v[0,0]のように行と列の要素を指定することで該当箇所の要素が得られます。
np.transpose(v)メソッドで軸の入れ替え(転置)を行います。
転置行列とものと行列の積を行うことで九九の表と同じリストが得られました。
ただし、行列の場合、席の順番に注意が必要で、間違った順で積を得ると要素が1つのリストになります。
(詳しくは行列についてググッてくださいw)
ちなみに計算結果を分解するとプログラム下部のように各要素同士をかけた二乗の積が得られ、それらの合計になっているって事です。

ついでにこちらをpandasモジュールを利用して表にしてみました。
「pip install pandas」してください。

import numpy as np
import pandas as pd

def show(first=1,end=9):
    column=[]
    for i in range(first,end+1):
        column.append(i)
    v = np.matrix(range(first,end+1))
    v = np.transpose(v)*v
    df = pd.DataFrame(v, index=column, columns=column)
    print(df)

show()

簡単に表を作成することができましたw

ただ、IDLEで実行すると可能だったんですが、ファイルから読み込むとpandasのimportがちゃんとできずにエラーが・・・

解せぬ・・・(uninstallしてinstallしなおしたけど改善されませんでした(泣))

↑エラー解決しました。(2019/10/09追記)
原因はファイル名がライブラリモジュールのpandasと同じにしてしまっていたため(^_^;)
自作モジュールの方が外部ライブラリよりも優先されてしまうので、ファイル名はモジュール名と同じにならないように注意しましょう!!

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください