【问题标题】:mystery axis 0 and 1 direction神秘轴0和1方向
【发布时间】:2019-06-25 09:05:19
【问题描述】:

跟着numpy章节的“Python进行数据分析”,遇到这样的例子

#+BEGIN_SRC ipython :session my :export both :results output
arr = np.random.randn(5, 4)
print(arr)
#+END_SRC
#+RESULTS:
: [[-1.20142965 -0.65152972  2.04732169 -2.27351496]
:  [ 1.0054648  -1.75728785  0.00923428 -0.65533187]
:  [-2.1108598  -0.92347845  0.46443361 -0.48219059]
:  [ 0.77617699  0.40242098  1.09411003 -0.6431827 ]
:  [-0.59485821  1.22890193 -0.7498006   0.93518233]]

它表明

mean 和 sum 等函数采用可选轴参数,计算给定轴上的统计数据,从而生成一个维度更少的数组:

#+BEGIN_SRC ipython :session my :export both :results output
print(arr.mean(axis=1))
print(arr.sum(axis=0))
#+END_SRC
#+RESULTS:
: [-0.51978816 -0.34948016 -0.76302381  0.40738132  0.20485636]
: [-2.12550586 -1.70097313  2.86529902 -3.11903779]

然后这本书解释了

这里,arr.mean(1) 的意思是“计算各列的平均值”,其中 arr.sum(0) 的意思是“计算各行的总和”。

我认为 McKinnney 先生以相反的方式进行了完美的解释。

arr.sum(0) 表示计算跨列的行
arr.mean(1) 表示沿列或垂直方向向下行。

我的理解有问题吗?

【问题讨论】:

  • 我认为“跨越”这个词太模棱两可了,因为它可以从两个方面来理解。
  • 使用二维数组时,axis 的这些解释可能会令人困惑。使用axis=0 或 3d 数组更容易描绘一维数组中发生的情况,您只需减少 3 个轴中的一个轴。有时添加keepdims=True 参数会有所帮助。
  • 一维数组是轴=0还是轴=1?默认情况下应该垂直或水平地查看数组吗? @hpaulj
  • 一维数组只有一个轴。该轴上的均值或总和将数组简化为标量(可以认为是 0d 数组)。

标签: python numpy


【解决方案1】:

沿着某个轴做意味着减少沿它的维度。 所以:

import numpy as np



arr = np.array([[1,2,3] , 
                [4,5,6]])


print(arr.sum(axis = 0))

print(arr.sum(axis = 1))

第一个沿轴 = 0 减少外部或“垂直”,如您所说,并返回 [1+4, 2+5, 3+6]

第二个沿着每一行撤退 [1+2+3, 4+5+6]

【讨论】:

  • 好吧,哈哈,这取决于如何查看矩阵,行通常水平水平是: : "arr.sum(0) 表示计算垂直方向跨列的行 arr.mean(1 ) 表示沿水平方向的行"。
  • 查看显示的矩阵,我认为答案证明它是错误的。
  • 是的,这本书是错误,但有时在特别古老的文学作品中,您可以看到行和列交换了
猜你喜欢
  • 2019-03-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-01-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多