【问题标题】:Element wise multiplication using Numpy [Python] [closed]使用 Numpy [Python] [关闭] 的元素明智乘法
【发布时间】:2021-07-29 07:21:16
【问题描述】:

我正在尝试使用普通 * 获得元素乘法,并且我尝试了 np.multiply(),两者都给出了奇怪的答案。

现在 (1-y) 是 (100,) 而 np.log(1-sigmoid(np.dot(X,theta)))) 是 (100,1),所以当我将它们按元素相乘时, 它应该给出 (100,1);但它给了我 (100,100) 矩阵(所有都是高亮的蓝色)

如果有帮助,这是我的原始功能。

谁能帮我在这里找到错误的来源?

【问题讨论】:

  • 请提供预期的minimal, reproducible example (MRE)。我们应该能够复制和粘贴您的代码的连续块,执行该文件,并重现您的问题以及跟踪问题点的输出。这让我们可以根据您的测试数据和所需的输出来测试我们的建议。显示中间结果与您的预期不同的地方。不接受站外链接和文字图片;我们需要您的问题是独立的,以符合本网站的目的。
  • 根据broadcasting 的规则,a (100,) 扩展为 (1,100)。带有 (100,1) 的那个会产生 (100,100)。如果您不学习这些基础知识,您将永远对 numpy 感到沮丧。
  • 请避免posting images of text。最好是转录它们。

标签: python list numpy matrix numpy-ndarray


【解决方案1】:

我不是 100% 确定为什么 python 会这样做,但解决它的方法是先应用 np.reshape((1-y),(100,1)),然后再应用 np.multiply()。一般来说,重塑数组并赋予它们第二维总是更好。

编辑This 解释了 numpy 在使用维度数组 (n,)(n,1) 时如何进行广播。

【讨论】:

  • 这些是numpy广播的基本规则。
  • 是的,它解决了。非常感谢
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-03-27
  • 2020-11-07
  • 1970-01-01
  • 1970-01-01
  • 2019-11-23
  • 1970-01-01
相关资源
最近更新 更多