最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

numpy中hstack vstack stack concatenate函數(shù)示例詳解

 更新時(shí)間:2023年02月23日 16:19:22   作者:石曉文  
這篇文章主要為大家介紹了numpy中hstack vstack stack concatenate函數(shù)示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪

大綱

本文主要介紹一下numpy中的幾個常用函數(shù),包括hstack()、vstack()、stack()、concatenate()。

1、concatenate()

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

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

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

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

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]])

進(jìn)一步,一個2*2的數(shù)組和一個2*1的數(shù)組,在第01維進(jìn)行拼接,得到一個2*3的數(shù)組:

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

輸出為:

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

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

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

上面的代碼會報(bào)錯:

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

2、stack()

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

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]])

進(jìn)一步:

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

輸出為:

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

如果換作是二維數(shù)組:

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]]])

可以看到,進(jìn)行stack的兩個數(shù)組必須有相同的形狀,同時(shí),輸出的結(jié)果的維度是比輸入的數(shù)組都要多一維的。我們拿第一個例子來舉例,兩個含3個數(shù)的一維數(shù)組在第0維進(jìn)行堆疊,其過程等價(jià)于先給兩個數(shù)組增加一個第0維,變?yōu)?*3的數(shù)組,再在第0維進(jìn)行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()的函數(shù)原型:vstack(tup) ,參數(shù)tup可以是元組,列表,或者numpy數(shù)組,返回結(jié)果為numpy的數(shù)組。它是垂直(按照行順序)的把數(shù)組給堆疊起來。
舉兩個簡單的例子:

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

輸出為:

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

進(jìn)一步:

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

輸出為:

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

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

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

輸出為:

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

可以看到,跟剛才的結(jié)果是一致的,但是如果進(jìn)行堆疊的兩個數(shù)組只有一維,那么結(jié)果是不同的:

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

上面得到的結(jié)果為:

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

4、hstack()

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

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

輸出為:

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

進(jìn)一步,對于二維數(shù)組的情形:

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

輸出為:

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

如果進(jìn)行hstack的數(shù)組至少有兩維,那么相當(dāng)于np.concatenate([a,b],axis=1)

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

輸出跟剛才的結(jié)果是一致的

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

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

5、tf中的stack()

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

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函數(shù)示例詳解的詳細(xì)內(nèi)容,更多關(guān)于numpy函數(shù)示例的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • 如何將寫好的pygame游戲打包成exe文件

    如何將寫好的pygame游戲打包成exe文件

    這篇文章主要介紹了如何將寫好的pygame游戲打包成exe文件,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-12-12
  • python中使用iterrows()對dataframe進(jìn)行遍歷的實(shí)例

    python中使用iterrows()對dataframe進(jìn)行遍歷的實(shí)例

    今天小編就為大家分享一篇python中使用iterrows()對dataframe進(jìn)行遍歷的實(shí)例,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-06-06
  • python簡單幾步獲取各種DOS命令顯示的內(nèi)容詳解流程

    python簡單幾步獲取各種DOS命令顯示的內(nèi)容詳解流程

    你會用python獲取各種DOS命令顯示的內(nèi)容核心嗎?說的可不是返回值,是用system()函數(shù)調(diào)用windows操作系統(tǒng)的DOS命令來做點(diǎn)事情,需要的朋友可以參考下
    2021-10-10
  • Python一行代碼解決矩陣旋轉(zhuǎn)的問題

    Python一行代碼解決矩陣旋轉(zhuǎn)的問題

    今天小編就為大家分享一篇Python一行代碼解決矩陣旋轉(zhuǎn)的問題,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-11-11
  • Python編輯和運(yùn)行的四種方式

    Python編輯和運(yùn)行的四種方式

    本篇內(nèi)容主要是講python在電腦上編輯和運(yùn)行的幾種不同方式,后面主要是在pycharm中去寫代碼,然后運(yùn)行,其實(shí)還有其他的方式可以在電腦上寫python代碼和運(yùn)行python代碼,需要的朋友可以參考下
    2024-08-08
  • pandas merge報(bào)錯的解決方案

    pandas merge報(bào)錯的解決方案

    這篇文章主要介紹了pandas merge報(bào)錯的解決方案,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-04-04
  • 利用Python演示數(shù)型數(shù)據(jù)結(jié)構(gòu)的教程

    利用Python演示數(shù)型數(shù)據(jù)結(jié)構(gòu)的教程

    這篇文章主要介紹了利用Python演示數(shù)型數(shù)據(jù)結(jié)構(gòu)的教程,核心代碼其實(shí)只有一行(XD),需要的朋友可以參考下
    2015-04-04
  • Python單元測試簡單示例

    Python單元測試簡單示例

    這篇文章主要介紹了Python單元測試,結(jié)合實(shí)例形式分析了Python單元測試的簡單定義、使用方法及相關(guān)操作注意事項(xiàng),需要的朋友可以參考下
    2018-07-07
  • 深入探究Python中變量的拷貝和作用域問題

    深入探究Python中變量的拷貝和作用域問題

    這篇文章主要介紹了Python中變量的拷貝和作用域問題,包括一些賦值、引用問題,以及相關(guān)函數(shù)在Python2和3版本之間的不同,需要的朋友可以參考下
    2015-05-05
  • python挖掘蛋卷基金投資組合數(shù)據(jù)分析

    python挖掘蛋卷基金投資組合數(shù)據(jù)分析

    這篇文章主要為大家介紹了python挖掘蛋卷基金投資組合數(shù)據(jù)分析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-05-05

最新評論

固始县| 团风县| 宜城市| 内江市| 长子县| 嫩江县| 犍为县| 福安市| 高密市| 邵武市| 襄垣县| 娱乐| 邯郸市| 印江| 盖州市| 长阳| 巧家县| 湖口县| 玛多县| 酒泉市| 志丹县| 始兴县| 泊头市| 柘城县| 银川市| 垫江县| 南岸区| 三门峡市| 淮北市| 延长县| 友谊县| 贺州市| 吉林省| 天全县| 台中县| 荆门市| 秀山| 麻栗坡县| 中方县| 汕头市| 喜德县|