【问题标题】:Python numpy array calculationPython numpy 数组计算
【发布时间】:2014-09-21 20:38:27
【问题描述】:

我使用 numpy histogram by N,a = np.histogram(z,bins=50) 计算了一个直方图切片。现在我的a 包含z 的50 个切片的值,N 包含这些切片内的计数。

我想为a 计算R-r

我试过了

result = [R-r for R,r in zip(a[1:],a)]

但它似乎不起作用。我在这里做错了什么?

【问题讨论】:

  • 代码没问题,输出:[2, 3, 2, 9, 6, 22],“但是好像不行”,能说的具体点吗?
  • @KobiK 当我执行上述操作时,我得到result = [1,1,1,1,1,1]
  • @user3397243 这是不可能的,除非你有一个像 [1, 2, 3, ...] 这样的数组
  • @user3397243 可以附上代码吗?
  • @user3397243:你为什么要处理第二个返回值?那是垃圾箱边缘。如果这是一个图形直方图,您将使用图表底部的小刻度来进行数学运算,而不是查看条形的高度。

标签: python numpy iteration


【解决方案1】:

您只需为此使用numpy.diff

>>> a = np.array([1,3,6,8,17,23,45])
>>> np.diff(a)
array([ 2,  3,  2,  9,  6, 22])

编辑:

您的代码也可以正常工作,但您不应为此使用列表推导,因为 NumPy 已经为此提供了一个函数,因为它既快速又高效。

>>> a = np.array([1,3,6,8,17,23,45])
>>> [R-r for R,r in zip(a[1:],a)]
[2, 3, 2, 9, 6, 22]

【讨论】:

  • @user3397243 你的代码对我来说很好,但如果 NumPy 已经为此提供了函数,你不应该列出理解。
  • 这同样不适用于直方图切片!!即如果我有b,a = np.histogram(r,bins=50),我说result = np.diff(a)
  • @user3397243 a 在这里包含什么?
  • a 包含已在 50 个 bin 中切片的 r 的数量,b 包含这些切片中的数量
  • 我已经正确编辑了我的问题。请看一下
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多