久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

用Python對(duì)numpy數(shù)組進(jìn)行變形

 東東Wr 2020-01-04

本教程和備忘單提供可視化幫助您了解numpy如何重塑多維數(shù)組。

用Python對(duì)numpy數(shù)組進(jìn)行變形

Cheatsheet for Python numpy reshape, stack, and flatten (created by Hause Lin and available here)

numpy reshape()方法如何重整數(shù)組,? 您是否感到困惑或難以理解其工作原理,? 本教程將引導(dǎo)您逐步重塑numpy,。 如果您需要上述備忘單的pdf副本,,則可以在此處(https://github.com/hauselin/rtutorialsite/blob/master/_posts/2019-12-20-numpy-reshape/reshape.pdf)下載。

創(chuàng)建一個(gè)Python numpy數(shù)組

使用np.arange()生成一個(gè)numpy數(shù)組,,其中包含從1到12的數(shù)字序列,。請(qǐng)參見此處的文檔。

import numpy as npa1 = np.arange(1, 13)  # numbers 1 to 12print(a1.shape)> (12,)print(a1)> [ 1  2  3  4  5  6  7  8  9 10 11 12]
用Python對(duì)numpy數(shù)組進(jìn)行變形

使用reshape()方法重塑

使用reshape()方法將a1數(shù)組整形為3 x 4維數(shù)組,。 讓我們使用3_4來表示它的尺寸:3是第0個(gè)尺寸(軸),,4是第1個(gè)尺寸(軸)(請(qǐng)注意,Python索引從0開始),。 請(qǐng)參閱此處的文檔,。

a1_2d = a1.reshape(3, 4)  # 3_4print(a1_2d.shape)> (3, 4)print(a1_2d)> [[ 1  2  3  4]   [ 5  6  7  8]   [ 9 10 11 12]]
用Python對(duì)numpy數(shù)組進(jìn)行變形

如果希望numpy自動(dòng)確定特定尺寸應(yīng)為多少尺寸/長(zhǎng)度,,請(qǐng)將該尺寸指定為-1。

a1.reshape(3, 4)a1.reshape(-1, 4)  # same as above: a1.reshape(3, 4)a1.reshape(3, 4)a1.reshape(3, -1)  # same as above: a1.reshape(3, 4)a1.reshape(2, 6)a1.reshape(2, -1)  # same as above: a1.reshape(2, 6)

沿不同尺寸重塑

默認(rèn)情況下,,reshape()沿第0維(行)對(duì)數(shù)組進(jìn)行整形,。 可以通過命令參數(shù)更改此行為(默認(rèn)值為" C")。 請(qǐng)參閱文檔以獲取更多信息,。

a1.reshape(3, 4) # reshapes or ‘fills in’ row by rowa1.reshape(3, 4, order='C') # same results as above

通過將順序更改為" F",,我們可以沿第一維(列)重塑形狀,。 對(duì)于熟悉MATLAB的人,,MATLAB使用此順序。

a1.reshape(3, 4, order='F')  # reshapes column by column> [[ 1  4  7 10]   [ 2  5  8 11]   [ 3  6  9 12]]
用Python對(duì)numpy數(shù)組進(jìn)行變形

測(cè)試:陣列a1的尺寸/形狀是什么,?

a1是一維數(shù)組-僅具有1個(gè)維度,,即使您可能認(rèn)為其維度應(yīng)為1_12(1行12列)。 要轉(zhuǎn)換為1_12數(shù)組,,請(qǐng)使用reshape(),。

print(a1)  # what's the shape?> [ 1  2  3  4  5  6  7  8  9 10 11 12]print(a1.shape)> (12,)a1_1_by_12 = a1.reshape(1, -1)  # reshape to 1_12print(a1_1_by_12)  # note the double square brackets!> [[ 1  2  3  4  5  6  7  8  9 10 11 12]]print(a1_1_by_12.shape)  # 1_12 array> (1, 12)

使用ravel()展平/拖曳到一維數(shù)組

使用ravel()方法可以將多維數(shù)組轉(zhuǎn)換為一維數(shù)組(請(qǐng)參見此處的文檔)。 我們的2D數(shù)組(3_4)將被展平或拉平,,使其成為具有12個(gè)元素的1D數(shù)組,。

如果您未指定任何參數(shù),則ravel()將沿行(第0維/軸)展平/散列我們的2D數(shù)組,。 即,,第0行[1、2,、3,、4] +第1行[5、6,、7,、8] +第2行[9、10,、11,、12]。

如果要沿列(第1維)展平/滾動(dòng),,請(qǐng)使用order參數(shù),。

print(a1_2d)  # 3_4> [[ 1  2  3  4]   [ 5  6  7  8]   [ 9 10 11 12]]print(a1_2d.ravel())  # ravel by row (default order='C')> [ 1  2  3  4  5  6  7  8  9 10 11 12]print(a1_2d.ravel(order='F'))  # ravel by column> [ 1  5  9  2  6 10  3  7 11  4  8 12]

使用np.stack()和np.hstack()連接/堆棧數(shù)組

用Python對(duì)numpy數(shù)組進(jìn)行變形

創(chuàng)建兩個(gè)一維數(shù)組

a1 = np.arange(1, 13)print(a1)> [ 1  2  3  4  5  6  7  8  9 10 11 12]a2 = np.arange(13, 25)print(a2)> [13 14 15 16 17 18 19 20 21 22 23 24]

使用np.stack()連接/堆棧數(shù)組。 默認(rèn)情況下,,np.stack()沿第0維(行)(參數(shù)軸= 0)堆疊數(shù)組,。 有關(guān)更多信息,請(qǐng)參閱文檔,。

stack0 = np.stack((a1, a1, a2, a2))  # default stack along 0th axisprint(stack0.shape)> (4, 12)print(stack0)> [[ 1  2  3  4  5  6  7  8  9 10 11 12]   [ 1  2  3  4  5  6  7  8  9 10 11 12]   [13 14 15 16 17 18 19 20 21 22 23 24]   [13 14 15 16 17 18 19 20 21 22 23 24]]

沿第一維堆疊(Axis= 1)

stack1 = np.stack((a1, a1, a2, a2), axis=1)print(stack1.shape)> (12, 4)print(stack1)> [[ 1  1 13 13]   [ 2  2 14 14]   [ 3  3 15 15]   [ 4  4 16 16]   [ 5  5 17 17]   [ 6  6 18 18]   [ 7  7 19 19]   [ 8  8 20 20]   [ 9  9 21 21]   [10 10 22 22]   [11 11 23 23]   [12 12 24 24]]

用np.hstack()連接為長(zhǎng)的一維數(shù)組(水平堆棧)

stack_long = np.hstack((a1, a2))print(stack_long.shape)> (24,)print(stack_long)> [ 1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24]

創(chuàng)建多維數(shù)組(3D)

多維數(shù)組非常常見,,稱為張量,。 它們?cè)谏疃葘W(xué)習(xí)和神經(jīng)網(wǎng)絡(luò)中使用很多。 如果您要進(jìn)行深度學(xué)習(xí),,則將定期重整張量或多維數(shù)組,。

首先,我們創(chuàng)建兩個(gè)不同的3 x 4數(shù)組,。 稍后,,我們將它們組合成一個(gè)3D陣列。

a1 = np.arange(1, 13).reshape(3, -1)  # 3_4a2 = np.arange(13, 25).reshape(3, -1)  # 3_4print(a1)> [[ 1  2  3  4]   [ 5  6  7  8]   [ 9 10 11 12]]print(a2)> [[13 14 15 16]   [17 18 19 20]   [21 22 23 24]]
用Python對(duì)numpy數(shù)組進(jìn)行變形

通過沿不同的軸/維度堆疊數(shù)組來創(chuàng)建3D數(shù)組

a3_0 = np.stack((a1, a2))  # default axis=0 (dimension 0)a3_1 = np.stack((a1, a2), axis=1)  # along dimension 1a3_2 = np.stack((a1, a2), axis=2)  # along dimension 2print(a3_0.shape)> (2, 3, 4)print(a3_1.shape)> (3, 2, 4)print(a3_2.shape)> (3, 4, 2)
用Python對(duì)numpy數(shù)組進(jìn)行變形

讓我們打印數(shù)組以查看它們的外觀,。 有關(guān)可視化的信息,,請(qǐng)參見上圖。

print(a3_0)> [[[ 1  2  3  4]    [ 5  6  7  8]    [ 9 10 11 12]]   [[13 14 15 16]    [17 18 19 20]    [21 22 23 24]]]print(a3_1)> [[[ 1  2  3  4]    [13 14 15 16]]   [[ 5  6  7  8]    [17 18 19 20]]   [[ 9 10 11 12]    [21 22 23 24]]]print(a3_2)> [[[ 1 13]    [ 2 14]    [ 3 15]    [ 4 16]]   [[ 5 17]    [ 6 18]    [ 7 19]    [ 8 20]]   [[ 9 21]    [10 22]    [11 23]    [12 24]]]

由于這三個(gè)3D數(shù)組是通過沿不同維度堆疊兩個(gè)數(shù)組而創(chuàng)建的,,因此,,如果我們要從這些3D數(shù)組中檢索原始的兩個(gè)數(shù)組,則必須沿正確的維度/軸進(jìn)行子集化,。

測(cè)試:我們?nèi)绾螐倪@些3D數(shù)組中檢索a1數(shù)組,?

print(a1)  # check what's a1> [[ 1  2  3  4]   [ 5  6  7  8]   [ 9 10 11 12]]# solutionsa3_0[0, :, :]a3_0[0]  # same as abovea3_1[:, 0, :]a3_2[:, :, 0]

展平多維數(shù)組

我們還可以使用ravel()展平多維數(shù)組。 下面,,我們逐行瀏覽(默認(rèn)順序?yàn)? C")到一維數(shù)組,。

用Python對(duì)numpy數(shù)組進(jìn)行變形
print(a3_0)> [[[ 1  2  3  4]    [ 5  6  7  8]    [ 9 10 11 12]]   [[13 14 15 16]    [17 18 19 20]    [21 22 23 24]]]print(a3_0.ravel())> [ 1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24]

逐列劃定(order ='F')到一維數(shù)組

print(a3_0.ravel(order='F'))> [ 1 13  5 17  9 21  2 14  6 18 10 22  3 15  7 19 11 23  4 16  8 20 12 24]

重塑多維數(shù)組

我們還可以使用reshape()重塑多維數(shù)組。

# reshape row by row (default order=C) to 2D arrayprint(a3_0)  # 2_3_4> [[[ 1  2  3  4]    [ 5  6  7  8]    [ 9 10 11 12]]   [[13 14 15 16]    [17 18 19 20]    [21 22 23 24]]]print(a3_0.reshape(4, -1))  # reshape to 4_6 (row by row)> [[ 1  2  3  4  5  6]   [ 7  8  9 10 11 12]   [13 14 15 16 17 18]   [19 20 21 22 23 24]]print(a3_0.reshape(4, -1, order='F'))  # reshape (column by column)> [[ 1  9  6  3 11  8]   [13 21 18 15 23 20]   [ 5  2 10  7  4 12]   [17 14 22 19 16 24]]print(a3_0.reshape(4, 2, 3))  # reshape to 4_2_3 (row by row)> [[[ 1  2  3]    [ 4  5  6]]   [[ 7  8  9]    [10 11 12]]   [[13 14 15]    [16 17 18]]   [[19 20 21]    [22 23 24]]]

結(jié)束語

我希望您現(xiàn)在對(duì)numpy如何重塑多維數(shù)組有了更好的了解,。 我期待您的想法和評(píng)論,。 另外,請(qǐng)查看有關(guān)numpy和數(shù)據(jù)表示的直觀介紹,。

(本文翻譯自Hause的文章《Reshaping numpy arrays in Python — a step-by-step pictorial tutorial》,,參考:https:///reshaping-numpy-arrays-in-python-a-step-by-step-pictorial-tutorial-aed5f471cf0b)

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,,不代表本站觀點(diǎn),。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,,謹(jǐn)防詐騙,。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào),。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多