Python 乘法,不同长度的数组求和:优化代码

Python Multiplication ,sum arrays with different length: Optimise code

我尝试操作不同形状的数组。 当我尝试 np.sum 或 np.multiply 我得到 ValueError:操作数无法与形状一起广播 (60,) (37,)

如何解决形状错误? 如果我在计算“SUM/multiply”时加上“0/1”会是个好主意吗?


您可以尝试以下方法:

import numpy as np

def zero_pad(a, newlen):
    result = np.zeros(newlen, dtype=a.dtype)
    result[:len(a)] = a
    return result
    # alternatively: return np.pad(a, (0, newlen - len(a)), 'constant')


def get_value(a, b, c, d, e):
    maxlen = max([len(ar) for ar in [a, b, c, d, e]])
    a = zero_pad(a, maxlen)
    b = zero_pad(b, maxlen)
    c = zero_pad(c, maxlen)
    d = zero_pad(d, maxlen)
    e = zero_pad(e, maxlen)
    return a + (b * d) + (c * e)

print(get_value(np.arange(4), np.arange(8), np.arange(3), np.arange(2), np.arange(5)))