numpy基礎屬性方法隨機整理(四)---陣列組合和分割 vstack /hstack / row_stack / column_stack / dstack /v[sd]split
陣列組合型別:
1. 垂直組合
np.vstack((up,down)) up, down 表示資料在上還是在下,類似於堆疊
2. 水平組合
np.hstack((left, right)) left right 表示資料在左還是在右
3. 行組合(物件:一維陣列)
np.row_stack((up,down))
4. 列組合(物件:一維陣列)
np.column_stack((left,right))
5. 深度組合
np.dstack((a,b))
6.垂直分割(vstack 與 vsplit 操作可逆)
u,m,d = np.vsplit(v,3) # 3表示分割後的個數
7.水平分割(hstack 與 hsplit 操作可逆)
l,m,r = np.hsplit(v,3)
8.深度分割 ——–(操作不可逆)
x,y = np.dsplit(d,2)
可逆需進行 x.T[0].T 的操作
注:引數為tuple
# -*- coding: utf-8 -*- """ Spyder Editor This is a temporary script file. """ import numpy as np a = np.arange(1, 19).reshape(3, 6) b = a * 10 c = a.ravel() # 檢視變維 d = b.flatten() # 複製變維 print('a:', a, '\n', 'b:', b, '\n', 'c:', c, '\n', 'd:', d, '\n') e = np.vstack((a, b)) # 垂直組合,引數為元組 (a,b) f = np.hstack((a, b)) # 水平組合 g = np.row_stack((c, d)) # 行組合,適用物件為一維陣列 h = np.column_stack((c, d)) # 列組合,適用物件為一維陣列 print('e1:', e, '\n', 'f:', f, '\n', 'g:', g, '\n', 'h:', h, '\n') k = np.dstack((a, b)) # 深度組合 print('深度組合dstack:','\n', k) print('e:','\n',e) u,mv,d = np.vsplit(e,3) print('\n','垂直拆分:', '\n', u,mv,d) # vstack與 vsplit操作可逆 l,mh,r = np.hsplit(e,3) # hstack 與 hsplit操作可逆 print('\n','水平拆分:','\n',l,mh,r) print('深度拆分:(不可逆)') # 不可逆,dstack 與 dsplit 操作不可逆 m, n = np.dsplit(k,2) print(k) print('m:',m.shape,'\n',m,'\n','n:',n.shape,'\n',n) print('\n','\\\\\\\\\\\\') print('m.T.shape:',m.T.shape,'\n',m.transpose(), '\n','m.T[0].T.shape:',m.T[0].T.shape,'\n',m.T[0].T) print(a == m.T[0].T) # 說明深度拆分不可逆,需進行 “m.T[0].T” 操作後才能復原
輸出結果:
a: [[ 1 2 3 4 5 6] [ 7 8 9 10 11 12] [13 14 15 16 17 18]] b: [[ 10 20 30 40 50 60] [ 70 80 90 100 110 120] [130 140 150 160 170 180]] c: [ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18] d: [ 10 20 30 40 50 60 70 80 90 100 110 120 130 140 150 160 170 180] e1: [[ 1 2 3 4 5 6] [ 7 8 9 10 11 12] [ 13 14 15 16 17 18] [ 10 20 30 40 50 60] [ 70 80 90 100 110 120] [130 140 150 160 170 180]] f: [[ 1 2 3 4 5 6 10 20 30 40 50 60] [ 7 8 9 10 11 12 70 80 90 100 110 120] [ 13 14 15 16 17 18 130 140 150 160 170 180]] g: [[ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18] [ 10 20 30 40 50 60 70 80 90 100 110 120 130 140 150 160 170 180]] h: [[ 1 10] [ 2 20] [ 3 30] [ 4 40] [ 5 50] [ 6 60] [ 7 70] [ 8 80] [ 9 90] [ 10 100] [ 11 110] [ 12 120] [ 13 130] [ 14 140] [ 15 150] [ 16 160] [ 17 170] [ 18 180]] 深度組合dstack: [[[ 1 10] [ 2 20] [ 3 30] [ 4 40] [ 5 50] [ 6 60]] [[ 7 70] [ 8 80] [ 9 90] [ 10 100] [ 11 110] [ 12 120]] [[ 13 130] [ 14 140] [ 15 150] [ 16 160] [ 17 170] [ 18 180]]] e: [[ 1 2 3 4 5 6] [ 7 8 9 10 11 12] [ 13 14 15 16 17 18] [ 10 20 30 40 50 60] [ 70 80 90 100 110 120] [130 140 150 160 170 180]] 垂直拆分: [[ 1 2 3 4 5 6] [ 7 8 9 10 11 12]] [[13 14 15 16 17 18] [10 20 30 40 50 60]] [[ 70 80 90 100 110 120] [130 140 150 160 170 180]] 水平拆分: [[ 1 2] [ 7 8] [ 13 14] [ 10 20] [ 70 80] [130 140]] [[ 3 4] [ 9 10] [ 15 16] [ 30 40] [ 90 100] [150 160]] [[ 5 6] [ 11 12] [ 17 18] [ 50 60] [110 120] [170 180]] 深度拆分:(不可逆) [[[ 1 10] [ 2 20] [ 3 30] [ 4 40] [ 5 50] [ 6 60]] [[ 7 70] [ 8 80] [ 9 90] [ 10 100] [ 11 110] [ 12 120]] [[ 13 130] [ 14 140] [ 15 150] [ 16 160] [ 17 170] [ 18 180]]] m: (3, 6, 1) [[[ 1] [ 2] [ 3] [ 4] [ 5] [ 6]] [[ 7] [ 8] [ 9] [10] [11] [12]] [[13] [14] [15] [16] [17] [18]]] n: (3, 6, 1) [[[ 10] [ 20] [ 30] [ 40] [ 50] [ 60]] [[ 70] [ 80] [ 90] [100] [110] [120]] [[130] [140] [150] [160] [170] [180]]] \\\\\\ m.T.shape: (1, 6, 3) [[[ 1 7 13] [ 2 8 14] [ 3 9 15] [ 4 10 16] [ 5 11 17] [ 6 12 18]]] m.T[0].T.shape: (3, 6) [[ 1 2 3 4 5 6] [ 7 8 9 10 11 12] [13 14 15 16 17 18]] [[ True True True True True True] [ True True True True True True] [ True True True True True True]]
注:print(a == m.T[0].T)的結果 說明深度拆分不可逆,需進行 “m.T[0].T” 操作後才能復原
另一篇比較好的部落格:
Python numpy函式hstack() vstack() stack() dstack() vsplit() concatenate()
相關推薦
numpy基礎屬性方法隨機整理(四)---陣列組合和分割 vstack /hstack / row_stack / column_stack / dstack /v[sd]split
陣列組合型別: 1. 垂直組合 np.vstack((up,down)) up, down 表示資料在上還是在下,類似於堆疊 2. 水平組合 np.hstack((left, right)) left right 表示資料在左還是在右 3. 行組合(物件:一維陣列)
numpy基礎屬性方法隨機整理(七)--- np.take() / np.where / np.argmax()/np.argmin()(對照pandas相應功能的屬性和方法對比學習)
Note1: np.take(close_prices, np.where(weekdays==weekday)) pandas中參考 《pandas基礎屬性方法隨機整理(四)—例項梳理(多知識點)》有三種方法實現該條件查詢功能: 方法1:輔助列 dat
numpy基礎屬性方法隨機整理(二)---切片 slice
注意: a[::-2] :切片起始索引和終止索引省略,-2表示逆序步長為2; a[-4::-2] :起始索引逆序第4個,終止索引為0,逆序步長為2; a[2::3] :起始索引為2,終止索引為最後一個,正序步長為3; b[…,1] D0和D1不作約
pandas基礎屬性方法隨機整理(四)---例項梳理(多知識點)
源資料格式: “” Yr Mo Dy RPT VAL ROS KIL SHA BIR DUB CLA MUL CLO BEL MAL 61 1 1 15.04 14.96 13.17 9.29 N
pandas基礎屬性方法隨機整理(三)--- 描述統計/去重計數/分組排序
分組和排序 Series.value_counts() & drop_duplicates() 資料集: baby_names.info() <class 'pandas.core.frame.DataFrame'> Rang
Python基礎班每日整理(四)
運算 不可變 變量 數字 () 關鍵字 能夠 lob 定義 02_Python基礎_day06 字符串的定義字符串就是一串字符,用一對兒單引號或者雙引號括起來 字符串切片切片就是使用索引值,從一個大的字符串中切出小的字符串,適用於字符串、元組、列表。基本語法是 字符串[
理論整理(四)
瀏覽器兼容 嵌入 code 整理 ajax 跟蹤 版本號 輕量級 完成 1、Git 和 SVN 之間的區別: 1.GIT是分布式的,SVN不是分布式; (最核心的區別) 2.GIT把內容按元數據方式存儲,而SVN是按文件; 3.GIT分支和SVN的分支不同; 4
Java基礎加強之並發(四)synchronized關鍵字
inter span static www name play demo try 繼續 並發系列參考文章http://www.cnblogs.com/skywang12345/p/3323085.html#3907193 synchronized原理 在java中,每一
Scala筆記整理(四):Scala面向對象—類詳解2(繼承相關)
大數據 Scala [TOC] 單例 希望某個類只存在一個使用的對象,而不管有多少個調用者在使用它,就是單例的概念。 Java中的單例 package cn.xpleaf.single; /** * 單例模式-餓漢式(在屬性中先創建好對象,不管是否調用getInstance方法) * @auth
spring 官方文件的介面理解整理(四)型別轉換spring例項解析
上篇文章解析了spring型別轉換的介面和他們的分工,怎麼通過設計模式實現轉換功能。 這篇需要些上篇的知識,如果沒有看可以從這兒跳轉spring 官方文件的介面理解整理(三)型別轉換 一、準備新建Maven專案,pom.xml內容如下 <properties>
Java基礎總結之設計模式(四)
介面卡模式: 我們在開發程式的是時候,我們會寫介面,會寫介面的實現類,但是當介面中的方法很多時,我們則會因為為了使用裡面的一個功能而"被迫"實現介面中的所有方法。這樣的效率是很低的。就算是介面中其他的方法全部空實現,那對於程式碼的冗餘等爺都是很大的。所以介面卡模式是思想是將一個介面轉換成客戶希望
Android 學習之《Android程式設計權威指南》第二版 程式碼+筆記整理(四)
(程式碼)GeoQuiz最終開發 GeoQuiz應用初步開發 GeoQuiz應用升級開發 解決GeoQuiz應用旋轉恢復第一題的BUG 不展示編譯器自動完成的程式碼,僅提供手動修改或者編寫的程式碼。 省略了先前一些程式碼,可參照上方連結。 升級內容: 增加作弊按鈕,給使用者提
【C語言實現串列埠通訊知識點整理(四)】關於執行緒和程序
轉載:https://www.cnblogs.com/fuchongjundream/p/3829508.html 因為在外部檔案中呼叫結構體沒有用extern修飾,導致獲取不到正確的值,一直糾結線上程上。現在大概總結執行緒和程序的特點: 概念 1、程序(process) 狹義定義:
java基礎(四)陣列
陣列是儲存多個變數的容器(集合) 本章內容是一維陣列的建立和小demo /* * 陣列 * 概念:1.陣列是儲存多個變數的容器(集合),且這些變數的資料型別一致 * 2.陣列既可以儲存基本資料型別,也可以儲存引用資料型別 * * */ public class Arra
基礎演算法與資料結構(四)最短路徑——Dijkstra演算法
一般最短路徑演算法習慣性的分為兩種:單源最短路徑演算法和全頂點之間最短路徑。前者是計算出從一個點出發,到達所有其餘可到達頂點的距離。後者是計算出圖中所有點之間的路徑距離。 單源最短路徑 Dijkstra演算法 思維 本質上是貪心的思想,宣告一個數組dis來儲存源點到各個頂點的最短距離和一個儲存已經
JAVA語言基礎——(四)陣列(拷貝)
一、問題解決 1.二分查詢 (1)int mid = (low + high)>>>1;//mid = (low + high) / 2位運算最快 (2)return -(low + 1);//查詢失敗,返回-(如果存在這個數將會在哪裡) (3)無須陣列:先排序後查詢
PHP基礎回顧之E-mail(四)
PHP的mail()函式 PHP 簡易 E-Mail 通過 PHP 傳送電子郵件的最簡單的方式是傳送一封文字 email。 <?php $to = "[email protected]"; // 郵件接收者 $subje
【計算機基礎】Java學習篇(四) 認識類與物件(打包器、陣列和字串)
介紹完基本型別,下面介紹類型別。 瞭解物件與參考的關係,認識打包器,以及陣列物件、字串物件。 一、類與物件 1.建立類 編寫程式需要使用物件(Object),產生物件必須先定義類(Class),類就像是設計圖,而物件是類
nodejs學習整理(四)
3.HTTP模組 1.HTTP協議 (1)通用頭資訊 (2)響應頭資訊 (3)請求頭資訊 (4)請求主體 2.http模組 (1)模擬客戶端瀏覽器 http.get(url,callback);callback引數中的res為伺服器端相應的物件 res.on(‘
Python基礎進階之路(四)之元組、字典和字符串
python基礎 tag 基礎 block 場景 分隔 應用場景 agg bsp 元組 元組的定義 Tuple(元組)與列表類似,不同之處在於元組的 元素不能修改 元組 表示多個元素組成的序列 元組 在 Python 開發中,有特定的應用場景 用