2018年7月7日土曜日

Python numpyでリストを分割、行列生成

numpyのreshapeを使って行列を作ります。


まず、0-5の整数を持ったarrayを作ります

import numpy as np
import pandas as pd
a = np.arange(6)
print(a)
Out:
[0 1 2 3 4 5]

reshapeを使って2要素のリスト3つ(2行3列)に分割します。

a.reshape(3,2)
Out:
array([[0, 1],
       [2, 3],
       [4, 5]])

3つに分けることが決まっていれば、要素数は-1としてもかまいません。

a.reshape(3,-1)
array([[0, 1],
       [2, 3],
       [4, 5]])

reshapeしてからpandas DataFrameに入れます。

pd.DataFrame(a.reshape(3,-1))

Out:
0 1
0 0 1
1 2 3
2 4 5
行指定したときと、列を指定したときには同じものが作れます。今の場合、reshape(3,-1)とreshape(-1,2)は同じです。

判定するとき、== で判定するとarrayの要素1つ1つを判定することになります。

a.reshape(-1,2) == a.reshape(3,-1)

Out:
array([[ True,  True],
       [ True,  True],
       [ True,  True]], dtype=bool)


arrayが同一かを調べるには numpy.array_equal() を使います。

np.array_equal(a.reshape(-1,2), a.reshape(3,-1))
Out:
True

0 件のコメント:

コメントを投稿