当前位置: 首页 > 面试题库 >

NumPy Sum(带轴)如何工作?

程昕
2023-03-14
问题内容

我已经学会了如何根据自己NumPy的好奇心来工作。

似乎最简单的功能最难翻译为代码(我理解代码)。对每种情况的每个轴进行硬编码很容易,但是我想找到一种动态算法,可以在任何轴上以n维求和。官方网站上的文档没有帮助(仅显示结果而不显示过程),并且很难浏览Python/ C代码。

注意: 我确实弄清楚了当对一个数组求和时,指定的轴是“已删除”,即,形状为(4,3,2)且轴为1的数组的总和会得出形状为的数组的答案(4,2)


问题答案:

考虑numpy数组 a

a = np.arange(30).reshape(2, 3, 5)
print(a)

[[[ 0  1  2  3  4]
  [ 5  6  7  8  9]
  [10 11 12 13 14]]

 [[15 16 17 18 19]
  [20 21 22 23 24]
  [25 26 27 28 29]]]

尺寸在哪里?

尺寸和位置由以下内容突出显示

            p  p  p  p  p
            o  o  o  o  o
            s  s  s  s  s

     dim 2  0  1  2  3  4

            |  |  |  |  |
  dim 0     ↓  ↓  ↓  ↓  ↓
  ----> [[[ 0  1  2  3  4]   <---- dim 1, pos 0
  pos 0   [ 5  6  7  8  9]   <---- dim 1, pos 1
          [10 11 12 13 14]]  <---- dim 1, pos 2
  dim 0
  ---->  [[15 16 17 18 19]   <---- dim 1, pos 0
  pos 1   [20 21 22 23 24]   <---- dim 1, pos 1
          [25 26 27 28 29]]] <---- dim 1, pos 2
            ↑  ↑  ↑  ↑  ↑
            |  |  |  |  |

     dim 2  p  p  p  p  p
            o  o  o  o  o
            s  s  s  s  s

            0  1  2  3  4

尺寸示例:

通过一些示例,这一点变得更加清楚

a[0, :, :] # dim 0, pos 0

[[ 0  1  2  3  4]
 [ 5  6  7  8  9]
 [10 11 12 13 14]]
a[:, 1, :] # dim 1, pos 1

[[ 5  6  7  8  9]
 [20 21 22 23 24]]
a[:, :, 3] # dim 2, pos 3

[[ 3  8 13]
 [18 23 28]]

sum

的解释sumaxis
a.sum(0)沿所有切片的总和dim 0

a.sum(0)

[[15 17 19 21 23]
 [25 27 29 31 33]
 [35 37 39 41 43]]

和…一样

a[0, :, :] + \
a[1, :, :]

[[15 17 19 21 23]
 [25 27 29 31 33]
 [35 37 39 41 43]]

a.sum(1) 是沿着所有切片的总和 dim 1

a.sum(1)

[[15 18 21 24 27]
 [60 63 66 69 72]]

和…一样

a[:, 0, :] + \
a[:, 1, :] + \
a[:, 2, :]

[[15 18 21 24 27]
 [60 63 66 69 72]]

a.sum(2) 是沿着所有切片的总和 dim 2

a.sum(2)

[[ 10  35  60]
 [ 85 110 135]]

和…一样

a[:, :, 0] + \
a[:, :, 1] + \
a[:, :, 2] + \
a[:, :, 3] + \
a[:, :, 4]

[[ 10  35  60]
 [ 85 110 135]]

默认轴是-1
指所有轴。或将所有数字相加。

a.sum()

435


 类似资料:
  • 问题内容: 有人可以确切解释NumPy中的参数做什么吗? 我很困惑。 我正在尝试使用该功能 最初,我认为如果数组本身是3维,将返回三个元素,该元素由同一位置上所有嵌套项的总和组成。如果每个维度都包含五个维度,则我希望返回五个项目的结果,依此类推。 但是事实并非如此,文档也不能很好地帮助我(他们使用3x3x3数组,因此很难判断发生了什么) 这是我所做的: 显然,结果并不直观。 问题答案: 显然, 轴

  • 使用Chrome DevTools Timeline(时间轴)面板录制和分析应用程序运行时的所有活动。这是开始检查和感知应用程序性能问题的最佳位置。 TL;DR 进行时间轴录制来分析在网页加载或用户互动后发生的每个事件。 在Overview(概览)窗格中查看FPS,CPU和网络请求。 单击 Flame Chart (火焰)图表中的事件可查看其详细信息。 放大录制的一部分,使分析更容易。 Timel

  • 在我添加所有JPA依赖项之前,它工作得很好,但是在我为JPA添加之后,我得到了上面的异常 我该怎么修好它?

  • 我手头有一个简单的任务:使用折线图或XY图或任何使用bean类型的数据源绘制整数-整数值对。有问题的bean返回X轴和Y轴的长值。人们期望的默认行为是在两个轴上显示1、2、3、4等刻度。 但是不,对于在两台不同计算机上运行的同一应用程序,我得到的值类似于2.5或1E1!好的,这篇旧帖子建议将设置为。现在确实显示了整数,但具有重复值,例如0,0,1,2,2,3,3,3,3,3,4,4等。同一篇文章建

  • google开发人员文档中的描述是: 公共静态CameraUpdate newLatLngBounds(LatLngBounds bounds,int padding)(...).返回的CameraUpdate的方位为0,倾斜度为0。(...)“。 如何更改轴承值?

  • 问题内容: 基本上我在一个图中有两个3d轴,一个通过matplotlib.aninmation构建的动画和一个并排的3d线图。我想添加功能,以便当您旋转一个轴时,另一个跟随它的旋转。例如,将当前视角发送到另一个轴的功能,例如; 等用于比较粒子的动画路径与其预先绘制的轨迹。 问题答案: 为了使mplot3d中两个子图之间的旋转同步,您可以将其连接到一个函数,该函数从旋转的图读取角度并将其应用于其他各