如何理解Axis?

2021-09-13 21:42:35 字數 3887 閱讀 6606

只有光頭才能變強。

回顧前面:

不知道大家最開始接觸到axis的時候是怎麼樣的,反正我是挺難理解的…我們可以發現tensorflow的很多api都有axis這個引數,如果我們對axis不了解,壓根不知道api是怎麼搞的。

一句話總結axis:axis可以方便我們將資料進行不同維度的處理

如果你像我一樣,發現api中有axis這個引數,但不知道是什麼意思。可能就會搜搜axis到底代表的什麼意思。於是可能會類似搜到下面的資訊:

使用0值表示沿著每一列或行標籤\索引值向下執行方法(axis=0代表往跨行)

使用1值表示沿著每一行或者列標籤模向執行對應的方法(axis=1代表跨列)

但我們又知道,我們的陣列不單單只有二維的,還有三維、四維等等。一旦維數超過二維,就無法用簡單的行和列來表示了

所以,可以用***的方式進行理解:

話不多說,下面以例子說明~

首先,我們來看個concat的例子,concat第乙個引數接收val,第二個引數接收的是axis

def

learn_concat()

:# 二維陣列

t1 = tf.constant([[

1,2,

3],[

4,5,

6]])

t2 = tf.constant([[

7,8,

9],[

10,11,

12]])

with tf.session(

)as sess:

# 二維陣列針對 axis 為0 和 1 的情況

print

(sess.run(tf.concat(

[t1, t2],0

)))print

(sess.run(tf.concat(

[t1, t2],1)))

ok,下面以圖示的方式來說明。現在我們有兩個陣列,分別是t1和t2:

首先,我們先看axis=0的情況,也就是tf.concat([t1, t2], 0)。從上面的描述,我們知道,先把第乙個括號去除,然後將其子內容看成乙個整體,在這個整體下進行想對應的運算(這裡我們就是concat)。

所以最終的結果是:

[[1

23],

[456

],[7

89],

[101112

]]

接著,我們再看axis=1的情況,也就是tf.concat([t1, t2], 1)。從上面的描述,我們知道,先把第二個括號去除,然後將其子內容看成乙個整體,在這個整體下進行想對應的運算(這裡我們就是concat)。

所以最終的結果是:

[[1

,2,3

,7,8

,9][

4,5,

6,10,

11,12]

]

接下來我們看一下三維的情況

def

learn_concat()

:# 三維陣列

t3 = tf.constant([[

[1,2

],[2

,3]]

,[[4

,4],

[5,3

]]])

t4 = tf.constant([[

[7,4

],[8

,4]]

,[[2

,10],

[15,11

]]])

with tf.session(

)as sess:

# 三維陣列針對 axis 為0 和 1 和 -1 的情況

print

(sess.run(tf.concat(

[t3, t4],0

)))print

(sess.run(tf.concat(

[t3, t4],1

)))print

(sess.run(tf.concat(

[t3, t4],-

1)))

ok,下面也以圖示的方式來說明。現在我們有兩個陣列,分別是t3和t4:

首先,我們先看axis=0的情況,也就是tf.concat([t3, t4], 0)。從上面的描述,我們知道,先把第乙個括號去除,然後將其子內容看成乙個整體,在這個整體下進行想對應的運算(這裡我們就是concat)。

所以最終的結果是:

[[[

12][

23]]

[[44

][53

]][[

74][

84]]

[[210

][1511]]

]

接著,我們再看axis=1的情況,也就是tf.concat([t3, t4], 1)。從上面的描述,我們知道,先把第二個括號去除,然後將其子內容看成乙個整體,在這個整體下進行想對應的運算(這裡我們就是concat)。

所以最終的結果是:

[[[

12][

23][

74][

84]]

[[44

][53

][210

][1511]]

]

as in python, theaxiscould also be negative numbers. negativeaxisare interpreted as counting from the end of the rank, i.e.,

axis + rank(values)-th dimension

所以,對於我們三維的陣列而言,那axis=-1實際上就是axis=2,下面我們再來看一下這種情況:

最終的結果是:

[[[

1274

][23

84]]

[[44

210][

531511]]

]

除了concat以外,其實很多函式都用到了axis這個引數,再舉個例子:

>>

> item = np.array([[

1,4,

8],[

2,3,

5],[

2,5,

1],[

1,10,

7]])

>>

> item

array([[

1,4,

8],[

2,3,

5],[

2,5,

1],[

1,10,

7]])

>>

> item.

sum(axis =1)

array([13

,10,8

,18])

>>

> item.

sum(axis =0)

array([6

,22,21

])

如何理解Axis?

只有光頭才能變強。回顧前面 不知道大家最開始接觸到axis的時候是怎麼樣的,反正我是挺難理解的.我們可以發現tensorflow的很多api都有axis這個引數,如果我們對axis不了解,壓根不知道api是怎麼搞的。一句話總結axis axis可以方便我們將資料進行不同維度的處理。如果你像我一樣,發...

如何理解Axis?

只有光頭才能變強。回顧前面 不知道大家最開始接觸到axis的時候是怎麼樣的,反正我是挺難理解的.我們可以發現tensorflow的很多api都有axis這個引數,如果我們對axis不了解,壓根不知道api是怎麼搞的。一句話總結axis axis可以方便我們將資料進行不同維度的處理。如果你像我一樣,發...

快速理解axis

axis在tensorflow和numpy中式經常出現的乙個引數,但是有時可能並不是很好的理解axis 0或者axis 1是沿著什麼方向進行計算的,經過我的實踐,在這裡寫出理解。in 10 a out 10 array 1,2,3 4,5,6 in 11 np.amax a axis 0 out 1...