【问题标题】:NumPy - How would I vectorize this operation?NumPy - 我将如何向量化这个操作?
【发布时间】:2020-02-29 02:44:30
【问题描述】:

我需要获取一个维度为(M, 4) 的数组并减去元素以返回一个(M, 2) 的数组。

例如:

[[1, 2, 3, 4],
 [5, 6, 7, 8]]

# to

[[2, 2],
 [2, 2]]

我尝试过的是:

subs = a[..., 2] - a[..., 0], a[..., 3] - a[..., 1]

但这以 2 个维度为 (M,) 的数组的方式返回。

【问题讨论】:

  • 所以你基本上想做a[:,2:] - a[:,:2]?

标签: python numpy


【解决方案1】:

您可以创建数组的视图,然后减去两个视图,例如:

a<b>[:,2:]</b> - a<b>[:,:2]</b>

例如对于一些样本输入:

>>> a
array([[5, 2, 9, 2],
       [9, 9, 7, 9]])
>>> a[:,2:] - a[:,:2]
array([[ 4,  0],
       [-2,  0]])

【讨论】:

    猜你喜欢
    • 2021-09-02
    • 2020-01-10
    • 2021-05-31
    • 1970-01-01
    • 2013-12-28
    • 2022-11-20
    • 2015-07-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多