【问题标题】:python: multiple arithmetic operations for numpy arraypython:numpy数组的多个算术运算
【发布时间】:2013-10-10 07:00:40
【问题描述】:

我有这个代码(需要从当前元素中减去之前元素的总和):

arr = np.zeros((N,M,T))
for it in xrange(T):
     sum_arr = np.zeros((M,N))
     for tt in xrange(it): sum_arr += arr[:,:,tt]
     arr[:,:,it] -= sum_arr

问题:是否可以用pythonic方式编写这段代码(首选一行)?提前谢谢。

【问题讨论】:

  • 您在代码中的缩进似乎已关闭。可以修一下吗?
  • 是的,抱歉 - 已修复。

标签: python numpy


【解决方案1】:

我认为您至少可以更有效地完成总和:

arr = np.zeros((N, M, T))
for it in xrange(T):
    arr[:,:,it] -= np.sum(arr[:,:,:it], axis=2)

几乎是一个 1-liner:

for it in xrange(T): arr[:,:,it] -= np.sum(arr[:,:,:it], axis=2)

我假设您的真实数据 arr 并非全为零 - 否则,总和将是一个零数组,然后您从零数组中减去它,留下 ... 和零数组(即'不是很有趣)。

【讨论】:

  • 完美运行。我只是忘记了 np.sum,感谢您提供线索。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-06-02
  • 2021-10-18
  • 1970-01-01
  • 2020-02-18
  • 1970-01-01
相关资源
最近更新 更多