【问题标题】:How to efficiently add or multiply every Nth element of a numpy array?如何有效地添加或乘以 numpy 数组的每个第 N 个元素?
【发布时间】:2021-03-17 12:51:35
【问题描述】:

假设我有以下 numpy 数组。

A = [1,2,3,4,5,6]

问题有没有一种快速的方法将 A 中的每个第 n 个元素相乘或相加以产生以下数组?

B = [3*1, 2*4, 3*5, 4*6]
C = [3+1, 2+4, 3+5, 4+6]  

我可以通过滚动 A 然后将其与原始 A 相加或相乘来完成此操作。

T = np.roll(A,-2)
B = (A*T)[0:4]
C = (A*T)[0:4] 

只是想知道是否有更 Pythonic/更有效的方法来完成此任务?我还查看了 np.add.reduceat 和 np.multiply.reduceat 但它们似乎不允许跳过值。

【问题讨论】:

    标签: python arrays numpy


    【解决方案1】:

    您可以通过以下方式进行:

    A = np.array([1, 2, 3, 4, 5, 6])
    k = 2
    B = A[:-k]
    C = A[k:]
    print(B * C)
    print(B + C)
    

    输出

    [ 3  8 15 24]
    [ 4  6  8 10]
    

    干杯。

    【讨论】:

    • 使用负索引B =可以简化为B = A[:-k]
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-31
    • 2014-06-23
    • 2014-11-24
    • 1970-01-01
    • 2019-08-15
    相关资源
    最近更新 更多