gpt4 book ai didi

python - 有没有一种快速方法来替换仅包含 1 和 -1 的 np.array 元素

转载 作者:行者123 更新时间:2023-12-02 00:43:43 28 4
gpt4 key购买 nike

假设 M 是一个形状为 (1024,1024) 的 2D numpy 数组,其中条目的值为 1 或 -1。我想用 exp(-x) 替换每个条目 x。有没有比使用 numpy.exp(-M) 函数更快的方法来做到这一点,以便它利用输入矩阵的元素仅采用少量不同值的事实?

最佳答案

这是您需要的吗?如果是这样,我认为这比任何涉及条件评估的操作都要快(也比使用 np.exp() 更快,正如 Mark Snyder 所展示的 - 感谢 Mark)。

import numpy as np
from math import e

M = np.random.randint(2, size=(1024,1024)) * 2 - 1

a = (1/e - e) / 2
b = (1/e + e) / 2

E = M * a + b

print(M[:3,:3])
# [[-1 1 1]
# [-1 -1 1]
# [-1 1 -1]]

print(E[:3,:3])
# [[2.71828183 0.36787944 0.36787944]
# [2.71828183 2.71828183 0.36787944]
# [2.71828183 0.36787944 2.71828183]]

实际上,只要矩阵的值为p,就可以使用这样的线性变换。和q必须转换为值为 r 的矩阵和s 。只需要解决系统即可

r = p * a + b
s = q * a + b

对于ab 。通用解决方案是

a = (r - s) / (p - q)
b = r - p * a = s - q * a = (p * s - q * r) / (p - q)

关于python - 有没有一种快速方法来替换仅包含 1 和 -1 的 np.array 元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60011597/

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