【Numpy學習08】陣列迭代

Xiao_Spring發表於2020-10-23

前言

除了for迴圈,Numpy 還提供另外一種更為優雅的遍歷方法。

  • apply_along_axis(func1d, axis, arr) Apply a function to 1-D slices along the given axis.

第一個引數是要執行的函式,第二個引數是遍歷的維度,第三個引數是要遍歷的資料

1.採用系統函式迭代

>>> a = np.random.randint(0,10,(5,5))
>>> print(a)
[[6 8 7 0 5]
 [3 4 4 3 7]
 [6 0 4 2 4]
 [3 9 8 4 8]
 [8 9 3 5 7]]
>>> b = np.apply_along_axis(np.sum, 0, x)
>>> print(b)
[25 12 28 12 28]
>>> b = np.apply_along_axis(np.sum, 1, x)
>>> print(b)
[28 19 16 24 18]

這裡解釋一下axis = 0的含義,以二維陣列距離,當axis = 0時,是指遍歷的方向是行,也就是說列是固定的,比如第一列6+3+6+3+8=25,就是結果陣列的第一個數,以此類推。axis = 1的含義是,遍歷的方向是列,示意圖如下:

在這裡插入圖片描述

2.採用自定義函式迭代

也就是更改第一個引數,如下:

>>> def xiao_func(x):
>>>     return (x[0] + x[3])
>>> b = np.apply_along_axis(xiao_func, 0, a)
>>> print(b)
[14  8 10  8 12]

相關文章