合并
在numpy中合并兩個array
numpy中可以通過concatenate,參數axis=0表示在垂直方向上合并兩個數組,等價于np.vstack;參數axis=1表示在水平方向上合并兩個數組,等價于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]])
在pandas中合并兩個DataFrame
pandas中通過concat方法實現合并,指定參數axis=0 或者 axis=1,在縱軸和橫軸上合并兩個數組。與numpy不同,這里的兩個dataframe要放在一個列表中,即[frame1,frame2]
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
拉直和重塑
拉直即把一個二維的array變成一個一維的array。默認情況下,Numpy數組是按行優先順序創建。在空間方面,這就意味著,對于一個二維數字,每行中的數據項是存放在內在中相鄰的位置上的。另一種順序是列優先。
由于歷史原因,行優先和列優先又分別被稱為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中數組的合并、拉直和重塑實例就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持億速云。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。