gpt4 book ai didi

python - numpy 的非常规向量乘法

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:02:00 30 4
gpt4 key购买 nike

我对以非常规方式进行数字乘法很感兴趣。假设你是这样乘法的:

out = a * b * c * d

out 如果所有输入均为正,所有输入均为负,或者两个输入为正两个为负(让我们忽略 0),则为正。

与传统数学不同,我希望仅当所有输入均为正或所有输入均为负时,输出的符号才为正。否则输出负数。

为标量实现这个很简单,但我想用 numpy 为逐元素向量乘法做这个。有没有一种简单的方法可以在 numpy 中实现它?

最佳答案

一种方法是分别计算绝对值和符号,如下所示:

import numpy as np

A = np.array([2,2,2,-2])
B = np.array([2,3,-2,-3])
C = np.array([2,-2,-4,-2])
D = np.array([2,5,2,-2])

M = abs(A*B*C*D)
S = np.sign(A) + np.sign(B) + np.sign(C) + np.sign(D)
M = np.where( (S==4) + (S==-4) ,M,-M)

print M

打印:

[ 16 -60 -32  24]

如果所有元素都是正数,S 将等于 4,如果所有元素都是负数,则 S 将等于 -4。所以在这些情况下,我们选择结果的正版本,否则选择负版本。

关于python - numpy 的非常规向量乘法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33190862/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com