为了账号安全,请及时绑定邮箱和手机立即绑定

python转javascript numpy ndarray操作混淆

python转javascript numpy ndarray操作混淆

暮色呼如 2023-06-20 14:11:17
我正在尝试将一些 python numpy 代码转换为 javascript,但我不确定以下代码实际在做什么。self.W = np.random.rand(size, size)-0.5self.W /= 0.9在这种情况下做什么- 0.5?这是否从多维数组中的每个数字中减去 0.5。在那条线的下方,除法是否发生在 self.W 内部的每个元素上?要转换为 javascript,我是否会遍历所有元素并将操作应用于该索引处的元素?另外,在下面的代码片段中,实际发生了什么??我不知道发生了什么。我习惯用括号表示法作为索引,但这看起来像是一个条件(比如三元?),但它看起来也像是在生成一个新矩阵来执行此操作。self.W[np.random.rand(size, size)>self.sparsity] = 0谢谢你的帮助。
查看完整描述

1 回答

?
郎朗坤

TA贡献1921条经验 获得超9个赞

您可能应该只安装适当版本的 Python 并numpy在尝试这样的转换时。


通过在 CLI 上进行几行简单的测试,您就可以回答自己的问题:


>>> import numpy as np

>>> np.random.rand(1, 2)

array([[0.08239857, 0.15732393]])

>>> x = np.random.rand(1, 2)

>>> x

array([[0.08155715, 0.57869165]])

>>> x - .5

array([[-0.41844285,  0.07869165]])

所以,是的——该numpy.ndarray类型定义了一个减法操作,当以数字作为第二个操作数并以数组作为第一个操作数时,从数组的每个元素中减去该数字。


对于除法,类似地:


>>> x *= 10

>>> x

array([[0.81557146, 5.78691654]])

>>> x /= 10

>>> x

array([[0.08155715, 0.57869165]])

不同之处在于,它/会返回一个新的结果数组 (in x / 10),而将/=结果分配给x,覆盖其在 中的值x /= 10。


最后一个例子比较复杂,但非常典型地numpy说明了库的实现方式。类似于和-被/=分发的操作,对数组应用比较会分发它并返回一个布尔值数组,然后可以将其用作“索引”以准确选择布尔值数组所对应的数组值是True。


0然后,在您给出的示例中,它会继续将这些选定的值准确设置为。


询问如何用 JavaScript 编写这些操作只是要求 SO 为您编写代码——既然您了解会发生什么,您应该尝试在 JavaScript 中实现相同的逻辑。如果遇到您不理解的特定问题,您可以针对这些问题提出单独的问题。


查看完整回答
反对 回复 2023-06-20
  • 1 回答
  • 0 关注
  • 127 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信