我想从长度为 n 的向量 x 创建一个 M 模式、n 维张量 A,使得
A_[i_1, i_2, ... , i_M] = x[i_1] * x[i_2] * ... * x[i_M].
到目前为止我拥有的代码是
A=np.multiply.outer(x,x)
for i in range(M-2):
A=np.multiply.outer(A,x)
我对 Python 编码相当陌生,所以我不确定是否有更紧凑/方便的方法来计算这个张量。
我们可以利用np.ix_创建输入数组的开放网格版本,然后将它们提供给np.multiply.reduce对于所有这些的逐元素乘法减少,就像这样 -
A = np.multiply.reduce(np.ix_(*[x]*M))
扩展到其他支持 ufunc
我们可以将其扩展到其他具有以下功能的 ufunc:reduce
方法。因此,例如要执行外部addition
, 这将是 -
np.add.reduce(np.ix_(*[x]*M))
等等。
完整列表ufuncs
支持此功能的,请参考docs. After Grep
-对于这些,我得到了以下支持的ufuncreduce
方法,因此可以利用之前发布的方法:
加、减、乘、除、logaddexp、logaddexp2、true_divide、
Floor_divide、负数、正数、幂、余数、mod、fmod、divmod、
绝对、fabs、rint、符号、heaviside、conj、exp、exp2、log、log2、
log10、expm1、log1p、sqrt、平方、cbrt、倒数、gcd、lcm、sin、
cos、tan、arcsin、arccos、arctan、arctan2、hypot、sinh、cosh、tanh、
arcsinh、arccosh、arctanh、deg2rad、rad2deg、按位与、按位或、
按位异或、反转、左移、右移、更大、更大_等于、
少、少等于、不等于、等于、逻辑与、逻辑或、
逻辑异或、逻辑非、最大值、最小值、fmax、fmin、isfinite、
isinf、isnan、isnat、fabs、signbit、copysign、nextafter、间距、
modf、ldexp、frexp、fmod、floor、ceil、trunc
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)