我有一个矩阵
A = np.array([[0.2, 0.4, 0.6],
[0.5, 0.5, 0.5],
[0.6, 0.4, 0.2]])
Run Code Online (Sandbox Code Playgroud)
我想要一个新的矩阵,其中第i行和第j列中的条目的值是第i行的所有条目的乘积,除了第j列中该行的单元格.
array([[ 0.24, 0.12, 0.08],
[ 0.25, 0.25, 0.25],
[ 0.08, 0.12, 0.24]])
Run Code Online (Sandbox Code Playgroud)
我第一次遇到的解决方案是
np.repeat(np.prod(A, 1, keepdims = True), 3, axis = 1) / A
Run Code Online (Sandbox Code Playgroud)
但只有当条目的值为零时,这才有效.
有什么想法吗?谢谢!
编辑:我已经开发了
B = np.zeros((3, 3))
for i in range(3):
for j in range(3):
B[i, j] = np.prod(i, A[[x for x in range(3) if x != j]])
Run Code Online (Sandbox Code Playgroud)
但肯定有更优雅的方法来实现这一点,这使得numpy的高效C后端而不是低效的python循环?
我正在编写一个元类,我想在 __new__ 和 __init__ 之间调用一个额外的方法。
如果我在 __new__ 之前或 __init__ 之后调用该方法,我可以编写例如
class Meta(type):
def __call__(cls):
ret = type.__call__()
ret.extraMethod()
Run Code Online (Sandbox Code Playgroud)
我的诱惑是写
class Meta(type):
def __call__(cls):
ret = cls.__new__(cls)
ret.extraMethod()
ret.__init__()
return ret
Run Code Online (Sandbox Code Playgroud)
并自己重现 type.__call__ 的功能。但恐怕我省略了 type.__call__ 的一些微妙之处,这将导致在实现我的元类时出现意外行为。
我不能从 __init__ 或 __new__ 调用 extraMethod 因为我希望我的元类的用户能够像在普通 Python 类中一样覆盖 __init__ 和 __new__,但仍然在 extraMethod 中执行重要的设置代码。
谢谢!
据我了解,“身份验证”意味着证明您就是您所声称的人。被“授权”意味着您有权执行您正在尝试的操作。
那么,为什么在用于 HTTP 身份验证的RFC中,您是否通过名为“授权”的标头进行身份验证(证明您就是您所说的人)?您并没有证明您可以进行某项操作。
“基本”身份验证方案基于客户端必须使用每个领域的用户 ID 和密码对其进行身份验证的模型......
...如果用户代理希望发送用户标识“阿拉丁”和密码“芝麻开门”,它将使用以下标题字段:
Run Code Online (Sandbox Code Playgroud)Authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==