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)))
我尝试操作不同形状的数组。 当我尝试 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)))