我自己学习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英文还可以的同学看看这个和这个应该会有更深刻的理解.
新闻热点
疑难解答