我自己學習numpy已經很長時間了, 但一直搞不懂它array里面axis的用法 經常就是自己試一下看看axis=0 或者 axis=1 的時候會怎么樣 然后再用到代碼里面, 比如:
首先導入numpy和創建一個array
>>> import numpy as np>>> a = np.array([[1,2],[10,20]])>>> aarray([[ 1, 2], [10, 20]])試試看當axis=0的時候平均值的輸出:
>>> a.mean(axis=0)array([ 5.5, 11. ])當aixs=1的時候平均值的輸出:
>>> a.mean(axis=1)array([ 1.5, 15. ])看似規律就是axis=0時是按照列來求平均而當axis=1時是按照行來求平均值的。 但是這種方法很難應用到高維的array中去:
>>> b = np.array([[[1,2,3],[4,5,6],[7,8,9]]])>>> barray([[[1, 2, 3], [4, 5, 6], [7, 8, 9]]])>>> b.shape(1, 3, 3)>>> b.mean(axis=0)array([[ 1., 2., 3.], [ 4., 5., 6.], [ 7., 8., 9.]])>>> b.mean(axis=1)array([[ 4., 5., 6.]])可以看出當數組的形狀為(1,3,3) axis=1時并不是按照行來求平均值的, 而且axis=0時的結果就是形狀為(3,3) 數值就是它本身的數組。 以上我們就可以總結出:
(1,3,3) 那么就有axis=2,而且結果就是最里面那3行每行的平均值:>>> b.mean(axis=2)array([[ 2.,  5.,  8.]])但是由于b只有三維(python從0開始index形狀), 當我們用axis=3時,就會有錯誤:
>>> b.mean(axis=3)Traceback (most recent call last): File "<stdin>", line 1, in <module> File "/Users/jinjunjie/anaconda/lib/python2.7/site-packages/numpy/core/_methods.py", line 56, in _mean rcount = _count_reduce_items(arr, axis) File "/Users/jinjunjie/anaconda/lib/python2.7/site-packages/numpy/core/_methods.py", line 50, in _count_reduce_items items *= arr.shape[ax]IndexError: tuple index out of range英文還可以的同學看看這個和這個應該會有更深刻的理解.
新聞熱點
疑難解答