在numpy.sum中没有清楚地理解python – axis = 0

前端之家收集整理的这篇文章主要介绍了在numpy.sum中没有清楚地理解python – axis = 0前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在学习 Python,并遇到过numpy.sum.它有一个可选的参数轴.此参数用于获取逐列求和或逐行求和.当axis = 0时,我们意味着仅对列进行求和.例如,
a = np.array([[1,2,3],[4,5,6]])
np.sum(a,axis = 0)

这段代码产生输出:array([5,7,9]),很好.但如果我这样做:

a = np.array([1,3])
np.sum(a,axis = 0)

我得到结果:6,为什么?我不应该得到阵列([1,3])?谢谢.

解决方法

所有这一切都是numpy在第一个(第0个)和唯一的轴上相加.考虑以下:
In [2]: a = np.array([1,3])

In [3]: a.shape
Out[3]: (3,)

In [4]: len(a.shape) # number of dimensions
Out[4]: 1

In [5]: a1 = a.reshape(3,1)

In [6]: a2 = a.reshape(1,3)

In [7]: a1
Out[7]: 
array([[1],[2],[3]])

In [8]: a2
Out[8]: array([[1,3]])

In [9]: a1.sum(axis=1)
Out[9]: array([1,3])

In [10]: a1.sum(axis=0)
Out[10]: array([6])

In [11]: a2.sum(axis=1)
Out[11]: array([6])

In [12]: a2.sum(axis=0)
Out[12]: array([1,3])

所以,更明确一点:

In [15]: a1.shape
Out[15]: (3,1)

a1是二维的,“长”轴是第一个.

In [16]: a1[:,0] # give me everything in the first axis,and the first part of the second
Out[16]: array([1,3])

现在,沿第一轴求和:

In [17]: a1.sum(axis=0)
Out[17]: array([6])

现在,考虑一个不那么微不足道的二维案例:

In [20]: b = np.array([[1,6]])

In [21]: b
Out[21]: 
array([[1,6]])

In [22]: b.shape
Out[22]: (2,3)

第一个轴是“行”.沿着行汇总:

In [23]: b.sum(axis=0)
Out[23]: array([5,9])

第二个轴是“列”.列总结:

In [24]: b.sum(axis=1)
Out[24]: array([ 6,15])

猜你在找的Python相关文章