numpyとpandasの配列の統合、直進、再成形の例
統合
numpyで二つのarrayを合併する。
numpyでは、concatentateを通じて、パラメータaxis=0は、垂直方向に2つの配列を結合することを表し、np.vstackに等しい。パラメータaxis=1は、水平方向に2つの配列を結合することを表し、np.hstackに相当します。
垂直方向:
pansdasではconcat法により統合が実現され、パラメータaxis=0またはaxis=1を指定して縦軸と横軸に2つの配列を結合します。numpyとは違って、ここの二つのdataframeは一つのリストに置くべきです。即ち「frame 1,frame 2」
まっすぐに引いてすぐ1つの二次元のarrayを1次元のarrayに変えます。デフォルトでは、Numpy配列は行優先順位で作成されます。空間的には、これは1つの2次元の数字に対して、各行のデータ項目が内部で隣接する位置に保存されることを意味する。もう一つの順序は列優先です。
歴史的な理由から、行優先と列優先はそれぞれCとFortran順と呼ばれています。Numpyでは、キーワードパラメータorder=「C」とorder=「F」によって現行の優先順位と列優先を実現することができます。
ストレート:
Fortran順序で再成形した後、列ごとにまっすぐ伸ばして元のデータと列ごとにまっすぐ伸ばします。
numpyで二つのarrayを合併する。
numpyでは、concatentateを通じて、パラメータaxis=0は、垂直方向に2つの配列を結合することを表し、np.vstackに等しい。パラメータaxis=1は、水平方向に2つの配列を結合することを表し、np.hstackに相当します。
垂直方向:
np.concatenate([arr1,arr2],axis=0)
np.vstack([arr1,arr2])
水平方向:
np.concatenate([arr1,arr2],axis=1)
np.hstack([arr1,arr2])
import numpy as np
import pandas as pd
arr1=np.ones((3,5))
arr1
Out[5]:
array([[ 1., 1., 1., 1., 1.],
[ 1., 1., 1., 1., 1.],
[ 1., 1., 1., 1., 1.]])
arr2=np.random.randn(15).reshape(arr1.shape)
arr2
Out[8]:
array([[-0.09666833, 1.47064828, -1.94608976, 0.2651279 , -0.32894787],
[ 1.01187699, 0.39171167, 1.49607091, 0.79216196, 0.33246644],
[ 1.71266238, 0.86650837, 0.77830394, -0.90519422, 1.55410056]])
np.concatenate([arr1,arr2],axis=0) #
Out[9]:
array([[ 1. , 1. , 1. , 1. , 1. ],
[ 1. , 1. , 1. , 1. , 1. ],
[ 1. , 1. , 1. , 1. , 1. ],
[-0.09666833, 1.47064828, -1.94608976, 0.2651279 , -0.32894787],
[ 1.01187699, 0.39171167, 1.49607091, 0.79216196, 0.33246644],
[ 1.71266238, 0.86650837, 0.77830394, -0.90519422, 1.55410056]])
np.concatenate([arr1,arr2],axis=1) #
Out[10]:
array([[ 1. , 1. , 1. , ..., -1.94608976,
0.2651279 , -0.32894787],
[ 1. , 1. , 1. , ..., 1.49607091,
0.79216196, 0.33246644],
[ 1. , 1. , 1. , ..., 0.77830394,
-0.90519422, 1.55410056]])
パンダスの中に二つのDataFrameを合併します。pansdasではconcat法により統合が実現され、パラメータaxis=0またはaxis=1を指定して縦軸と横軸に2つの配列を結合します。numpyとは違って、ここの二つのdataframeは一つのリストに置くべきです。即ち「frame 1,frame 2」
from pandas import DataFrame
frame1=DataFrame([[1,2,3],[4,5,6]])
frame2=DataFrame([[7,8,9],[10,11,12]])
pd.concat([frame1,frame2], ignore_index=True) # 。
Out[25]:
0 1 2
0 1 2 3
1 4 5 6
0 7 8 9
1 10 11 12
pd.concat([frame1,frame2], axis=1, ignore_index=True)
Out[27]:
0 1 2 3 4 5
0 1 2 3 7 8 9
1 4 5 6 10 11 12
ストレートとリフォームまっすぐに引いてすぐ1つの二次元のarrayを1次元のarrayに変えます。デフォルトでは、Numpy配列は行優先順位で作成されます。空間的には、これは1つの2次元の数字に対して、各行のデータ項目が内部で隣接する位置に保存されることを意味する。もう一つの順序は列優先です。
歴史的な理由から、行優先と列優先はそれぞれCとFortran順と呼ばれています。Numpyでは、キーワードパラメータorder=「C」とorder=「F」によって現行の優先順位と列優先を実現することができます。
ストレート:
arr=np.arange(15).reshape(3,-1)
arr
Out[29]:
array([[ 0, 1, 2, 3, 4],
[ 5, 6, 7, 8, 9],
[10, 11, 12, 13, 14]])
arr.ravel('F') # , 。
Out[30]: array([ 0, 5, 10, ..., 4, 9, 14])
arr.ravel('C') # 。# , 。
Out[31]: array([ 0, 1, 2, ..., 12, 13, 14])
再成形:Fortran順序で再成形した後、列ごとにまっすぐ伸ばして元のデータと列ごとにまっすぐ伸ばします。
arr.reshape((5,3),order='F')
Out[32]:
array([[ 0, 11, 8],
[ 5, 2, 13],
[10, 7, 4],
[ 1, 12, 9],
[ 6, 3, 14]])
C順序で再成形した後、行によってまっすぐ伸ばしても元のデータと同じです。
arr.reshape((5,3),order='C')
Out[33]:
array([[ 0, 1, 2],
[ 3, 4, 5],
[ 6, 7, 8],
[ 9, 10, 11],
[12, 13, 14]])
以上のnumpyとpandasの配列の統合、直進とリフォームの例は小編集が皆さんに共有した内容です。参考にしていただければと思います。どうぞよろしくお願いします。