【问题标题】:python to javascript numpy ndarray operation confusionpython to javascript numpy ndarray 操作混乱
【发布时间】:2020-08-24 03:05:47
【问题描述】:

我正在尝试将一些 python numpy 代码转换为 javascript,但我不确定以下代码实际上在做什么。

self.W = np.random.rand(size, size)-0.5

self.W /= 0.9

- 0.5 在这种情况下会做什么?这是否会从多维数组中的每个数字中减去 0.5。就在那条线的下方,除法是否发生在 self.W 内部的每个元素上?要转换为 javascript,我是否只需遍历所有元素并将操作应用于该索引处的元素?

另外,在下面的 sn-p 中,实际发生了什么?我不知道发生了什么。我习惯用括号表示法作为索引,但这看起来像一个条件(比如三元?),但它看起来也正在生成一个新矩阵来执行此操作。

self.W[np.random.rand(size, size)>self.sparsity] = 0

感谢您的帮助。

Original Python Code on GitHub

【问题讨论】:

    标签: javascript python numpy


    【解决方案1】:

    在尝试这样的转换时,您可能应该只安装适当版本的 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]])
    

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

    最后一个例子更复杂,但非常典型的 numpy 库是如何实现的。类似于 -/= 被分发的操作,对数组应用比较会分发它并返回一个布尔值数组,然后可以将其用作“索引”来准确选择数组的那些值其中布尔值数组为True

    然后在您给出的示例中将这些选定的值准确设置为0

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-12-13
      • 2011-07-19
      • 1970-01-01
      • 2011-05-02
      • 2023-04-01
      • 1970-01-01
      • 1970-01-01
      • 2014-02-10
      相关资源
      最近更新 更多