1. 程式人生 > >numpy基礎屬性方法隨機整理(四)---陣列組合和分割 vstack /hstack / row_stack / column_stack / dstack /v[sd]split

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 開發中,有特定的應用場景 用