numpy數(shù)組合并和矩陣拼接的實(shí)現(xiàn)
Numpy中提供了concatenate,append, stack類(包括hsatck、vstack、dstack、row_stack、column_stack),r_和c_等類和函數(shù)用于數(shù)組拼接的操作。
各種函數(shù)的特點(diǎn)和區(qū)別如下標(biāo):
| concatenate | 提供了axis參數(shù),用于指定拼接方向 |
|---|---|
| append | 默認(rèn)先ravel再拼接成一維數(shù)組,也可指定axis |
| stack | 提供了axis參數(shù),用于生成新的維度 |
| hstack | 水平拼接,沿著行的方向,對(duì)列進(jìn)行拼接 |
| vstack | 垂直拼接,沿著列的方向,對(duì)行進(jìn)行拼接 |
| dstack | 沿著第三個(gè)軸(深度方向)進(jìn)行拼接 |
| column_stack | 水平拼接,沿著行的方向,對(duì)列進(jìn)行拼接 |
| row_stack | 垂直拼接,沿著列的方向,對(duì)行進(jìn)行拼接 |
| r_ | 垂直拼接,沿著列的方向,對(duì)行進(jìn)行拼接 |
| c_ | 水平拼接,沿著行的方向,對(duì)列進(jìn)行拼接 |
直接合并
將兩個(gè)一維數(shù)組合并成一個(gè)二維數(shù)組:
import torch import numpy as np import matplotlib.pyplot as plt a = np.arange(0,15,0.1) b = 1.088 * a + 0.638 + np.random.rand() * 10 print(a.shape,b.shape) points = np.array([a,b]) print(points.shape) (150,) (150,) (2, 150)
append拼接
append(arr, values, axis=None)
| arr | 待合并的數(shù)組的復(fù)制(特別主頁(yè)是復(fù)制,所以要多耗費(fèi)很多內(nèi)存) |
| values | 用來(lái)合并到上述數(shù)組復(fù)制的值。如果指定了下面的參數(shù)axis的話,則這些值必須和arr的shape一致(shape[axis]之外都相等),否則的話,則沒(méi)有要求。 |
| axis | 要合并的軸. |
>>> import numpy as np >>> ar1 = np.array([[1,2,3], [4,5,6]]) >>> ar2 = np.array([[7,8,9], [11,12,13]]) >>> np.append(ar1, ar2) # 先ravel扁平化再拼接,所以返回值為一個(gè)1維數(shù)組 array([ 1, 2, 3, 4, 5, 6, 7, 8, 9, 11, 12, 13]) >>> np.append(ar1, ar2, axis=0) # 沿第一個(gè)軸拼接,這里為行的方向 array([[ 1, 2, 3], [ 4, 5, 6], [ 7, 8, 9], [11, 12, 13]]) >>> np.append(ar1, ar2, axis=1) # 沿第二個(gè)軸拼接,這里為列的方向 array([[ 1, 2, 3, 7, 8, 9], [ 4, 5, 6, 11, 12, 13]])
concatenate拼接
concatenate(a_tuple, axis=0, out=None)
| a_tuple: | 對(duì)需要合并的數(shù)組用元組的形式給出 |
| axis | 待合并的軸,默認(rèn)為0 |
>>> import numpy as np >>> ar1 = np.array([[1,2,3], [4,5,6]]) >>> ar2 = np.array([[7,8,9], [11,12,13]]) >>> ar1 array([[1, 2, 3], [4, 5, 6]]) >>> ar2 array([[ 7, 8, 9], [11, 12, 13]]) >>> np.concatenate((ar1, ar2)) # 這里的第一軸(axis 0)是行方向 array([[ 1, 2, 3], [ 4, 5, 6], [ 7, 8, 9], [11, 12, 13]]) >>> np.concatenate((ar1, ar2),axis=1) # 這里沿第二個(gè)軸,即列方向進(jìn)行拼接 array([[ 1, 2, 3, 7, 8, 9], [ 4, 5, 6, 11, 12, 13]]) >>> ar3 = np.array([[14,15,16]]) # shape為(1,3)的2維數(shù)組 >>> np.concatenate((ar1, ar3)) # 一般進(jìn)行concatenate操作的array的shape需要一致,當(dāng)然如果array在拼接axis方向的size不一樣,也可以完成 >>> np.concatenate((ar1, ar3)) # ar3雖然在axis0方向的長(zhǎng)度不一致,但axis1方向上一致,所以沿axis0可以拼接 array([[ 1, 2, 3], [ 4, 5, 6], [14, 15, 16]]) >>> np.concatenate((ar1, ar3), axis=1) # ar3和ar1在axis0方向的長(zhǎng)度不一致,所以報(bào)錯(cuò)
hstack
>>> np.hstack((ar1,ar2)) # 水平拼接,沿著行的方向,對(duì)列進(jìn)行拼接 array([[ 1, 2, 3, 7, 8, 9], [ 4, 5, 6, 11, 12, 13]])
vstack
>>> np.vstack((ar1,ar2)) # 垂直拼接,沿著列的方向,對(duì)行進(jìn)行拼接 array([[ 1, 2, 3], [ 4, 5, 6], [ 7, 8, 9], [11, 12, 13]])
vstack
>>> np.dstack((ar1,ar2)) # 對(duì)于2維數(shù)組來(lái)說(shuō),沿著第三軸(深度方向)進(jìn)行拼接, 效果相當(dāng)于stack(axis=-1) array([[[ 1, 7], [ 2, 8], [ 3, 9]], [[ 4, 11], [ 5, 12], [ 6, 13]]])
column_stack和row_stack
>>> np.column_stack((ar1,ar2)) # 水平拼接,沿著行的方向,對(duì)列進(jìn)行拼接 array([[ 1, 2, 3, 7, 8, 9], [ 4, 5, 6, 11, 12, 13]]) >>> np.row_stack((ar1,ar2)) # 垂直拼接,沿著列的方向,對(duì)行進(jìn)行拼接 array([[ 1, 2, 3], [ 4, 5, 6], [ 7, 8, 9], [11, 12, 13]])
np.r_ 和np.c_
常用于快速生成ndarray數(shù)據(jù)
>>> np.r_[ar1,ar2] # 垂直拼接,沿著列的方向,對(duì)行進(jìn)行拼接 array([[ 1, 2, 3], [ 4, 5, 6], [ 7, 8, 9], [11, 12, 13]]) >>> np.c_[ar1,ar2] # 水平拼接,沿著行的方向,對(duì)列進(jìn)行拼接 array([[ 1, 2, 3, 7, 8, 9], [ 4, 5, 6, 11, 12, 13]])
到此這篇關(guān)于numpy數(shù)組合并和矩陣拼接的實(shí)現(xiàn)的文章就介紹到這了,更多相關(guān)numpy數(shù)組合并和矩陣拼接內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python+PyQt編寫一個(gè)數(shù)字轉(zhuǎn)大寫金額GUI工具
在財(cái)務(wù)數(shù)據(jù)處理場(chǎng)景中,數(shù)字金額的大寫轉(zhuǎn)換是確保票據(jù)準(zhǔn)確性和防偽性的重要環(huán)節(jié),本文將使用Python和PyQt編寫一個(gè)數(shù)字轉(zhuǎn)大寫金額GUI工具,有需要的小伙伴可以了解下2025-09-09
python使用多線程+socket實(shí)現(xiàn)端口掃描
這篇文章主要為大家詳細(xì)介紹了python使用多線程+socket實(shí)現(xiàn)端口掃描,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-05-05
Django Admin 實(shí)現(xiàn)外鍵過(guò)濾的方法
下面小編就為大家?guī)?lái)一篇Django Admin 實(shí)現(xiàn)外鍵過(guò)濾的方法。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-09-09
使用keras實(shí)現(xiàn)Precise, Recall, F1-socre方式
這篇文章主要介紹了使用keras實(shí)現(xiàn)Precise, Recall, F1-socre方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-06-06
python翻譯軟件實(shí)現(xiàn)代碼(使用google api完成)
這篇文章主要介紹了python結(jié)合google api完成的翻譯軟件實(shí)現(xiàn)代碼,大家參考使用2013-11-11
Python 3實(shí)戰(zhàn)爬蟲之爬取京東圖書的圖片詳解
最近在學(xué)習(xí)python3,下面這篇文章主要給大家介紹了關(guān)于Python3實(shí)戰(zhàn)爬蟲之爬取京東圖書圖片的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起看看吧。2017-10-10

