亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

numpy中hstack、vstack、stack和concatenate函數怎么使用

發布時間:2023-02-24 09:51:44 來源:億速云 閱讀:106 作者:iii 欄目:開發技術

本篇內容主要講解“numpy中hstack、vstack、stack和concatenate函數怎么使用”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“numpy中hstack、vstack、stack和concatenate函數怎么使用”吧!

1、concatenate()

我們先來介紹最全能的concatenate()函數,后面的幾個函數其實都可以用concatenate()函數來進行等價操作。

concatenate()函數根據指定的維度,對一個元組、列表中的list或者ndarray進行連接,函數原型:

numpy.concatenate((a1, a2, ...), axis=0)

先來看幾個例子,一個2*2的數組和一個1*2的數組,在第0維進行拼接,得到一個3*2的數組:

a = np.array([[1, 2], [3, 4]])
b = np.array([[5, 6]])
np.concatenate((a, b), axis=0)

輸出為:

array([[1, 2],
       [3, 4],
       [5, 6]])

進一步,一個2*2的數組和一個2*1的數組,在第01維進行拼接,得到一個2*3的數組:

np.concatenate((a, b.T), axis=1)

輸出為:

array([[1, 2, 5],
       [3, 4, 6]])

上面兩個簡單的例子中,拼接的維度的長度是不同的,但是其他維度的長度必須是相同的,這也是使用concatenate()函數的一個基本原則,違背此規則就會報錯,例如一個2*2的數組和一個1*2的數組,在第1維進行拼接:

np.concatenate((a, b), axis=1)

上面的代碼會報錯:

ValueError: all the input array dimensions except for the concatenation axis must match exactly

2、stack()

stack()函數的原型是numpy.stack(arrays, axis=0),即將一堆數組的數據按照指定的維度進行堆疊。
我們先看兩個簡單的例子:

a = np.array([1,2,3])
b = np.array([2,3,4])
np.stack([a,b],axis=0)

輸出為:

array([[1, 2, 3],
       [2, 3, 4]])

進一步:

np.stack([a,b],axis=1)

輸出為:

array([[1, 2],
       [2, 3],
       [3, 4]])

如果換作是二維數組:

a = np.array([[1,2,3]])
b = np.array([[2,3,4]])
np.stack([a,b],axis=0)

輸出為:

array([[[1, 2, 3]],
       [[2, 3, 4]]])

可以看到,進行stack的兩個數組必須有相同的形狀,同時,輸出的結果的維度是比輸入的數組都要多一維的。我們拿第一個例子來舉例,兩個含3個數的一維數組在第0維進行堆疊,其過程等價于先給兩個數組增加一個第0維,變為1*3的數組,再在第0維進行concatenate()操作:

a = np.array([1,2,3])
b = np.array([2,3,4])
a = a[np.newaxis,:]
b = b[np.newaxis,:]
np.concatenate([a,b],axis=0)

輸出為:

array([[1, 2, 3],
       [2, 3, 4]])

3、vstack()

vstack()的函數原型:vstack(tup) ,參數tup可以是元組,列表,或者numpy數組,返回結果為numpy的數組。它是垂直(按照行順序)的把數組給堆疊起來。
舉兩個簡單的例子:

a = np.array([1,2,3])
b = np.array([2,3,4])
np.vstack([a,b])

輸出為:

array([[1, 2, 3],
       [2, 3, 4]])

進一步:

a=[[1],[2],[3]]
b=[[1],[2],[3]]
np.vstack([a,b])

輸出為:

array([[1],
       [2],
       [3],
       [1],
       [2],
       [3]])

如果進行vstack的數組至少有兩維,那么相當于np.concatenate([a,b],axis=0),我們通過例子進行對比:

a=[[1],[2],[3]]
b=[[1],[2],[3]]
np.concatenate([a,b],axis=0)

輸出為:

array([[1],
       [2],
       [3],
       [1],
       [2],
       [3]])

可以看到,跟剛才的結果是一致的,但是如果進行堆疊的兩個數組只有一維,那么結果是不同的:

a = np.array([1,2,3])
b = np.array([2,3,4])
np.concatenate([a,b],axis=0)

上面得到的結果為:

array([1, 2, 3, 2, 3, 4])

4、hstack()

hstack()的函數原型:hstack(tup) ,參數tup可以是元組,列表,或者numpy數組,返回結果為numpy的數組。它其實就是水平(按列順序)把數組給堆疊起來,與vstack()函數正好相反。舉幾個簡單的例子:

a = np.array([1,2,3])
b = np.array([2,3,4])
np.hstack([a,b])

輸出為:

array([1, 2, 3, 2, 3, 4])

進一步,對于二維數組的情形:

a=[[1],[2],[3]]
b=[[1],[2],[3]]
np.hstack([a,b])

輸出為:

array([[1, 1],
       [2, 2],
       [3, 3]])

如果進行hstack的數組至少有兩維,那么相當于np.concatenate([a,b],axis=1)

a=[[1],[2],[3]]
b=[[1],[2],[3]]
np.concatenate([a,b],axis=1)

輸出跟剛才的結果是一致的

array([[1, 1],
       [2, 2],
       [3, 3]])

只有一維的情況下,并不等價于np.concatenate([a,b],axis=1),反而等價于np.concatenate([a,b],axis=0)。

5、tf中的stack()

tensorflow中也提供了stack函數,跟numpy中的stack函數的作用是一樣的,我們通過例子來體會:

import tensorflow as tf
a = tf.convert_to_tensor([1,2,3])
b = tf.convert_to_tensor([2,3,4])
stack_ab = tf.stack([a,b])
a1 = tf.expand_dims(a,axis=0)
b1 = tf.expand_dims(b,axis=0)
concat_ab = tf.concat([a1,b1],axis=0)
with tf.Session() as sess:
    print(sess.run(stack_ab))
    print(sess.run(concat_ab))

輸出為:

[[1 2 3]
 [2 3 4]]
[[1 2 3]
 [2 3 4]]

到此,相信大家對“numpy中hstack、vstack、stack和concatenate函數怎么使用”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

武城县| 崇仁县| 镇江市| 工布江达县| 罗源县| 安丘市| 武胜县| 瑞昌市| 出国| 桐柏县| 乐东| 闽清县| 柯坪县| 长岛县| 日土县| 邳州市| 宁乡县| 沽源县| 南通市| 谷城县| 安仁县| 炎陵县| 金乡县| 康定县| 富源县| 海丰县| 镇赉县| 泗水县| 宝山区| 滦南县| 遵化市| 林周县| 海口市| 六安市| 卢龙县| 合川市| 明水县| 达孜县| 阳原县| 永兴县| 宜兰县|