【问题标题】:Outer product with Numpy and NdarrayNumpy 和 Ndarray 的外积
【发布时间】:2019-03-06 22:56:09
【问题描述】:

在我的一个代码中,我使用 numpy 进行矩阵计算。

在某一时刻,我必须做 2 个向量之间的外积来得到一个矩阵。这就是我卡住的地方。起初,我尝试了 numpy.dot 或其他矩阵产品,但是当参数都是一维时,它只做标量产品,这不是我想要的。然后我发现 numpy.outer 完全符合我的要求:一列 * 一行。

问题是,我的向量不是数组。由于它们是由 numpy.dot 操作产生的,因此它们是 ndarray 对象。但是 ndarrays 没有外部方法。我已经尝试了在 Internet 上找到的所有方法,将我的 ndarray 转换为简单的数组。但是没有任何效果,我仍然一次又一次地遇到ndarray和相同的属性错误。

现在我不知道该尝试什么,所以在我做一些暗示克隆数组中的值的讨厌的事情之前,我想检查一下你是否知道另一种方法来做这个外部产品。

非常感谢您的帮助。

【问题讨论】:

  • 所以澄清一下:你想把一个 ndarray 对象转换成一个数组数组?
  • 有人可能会纠正我,但我认为所有 numpy 数组都是 numpy.ndarray 类的实例。没有简单的array 这样的类。数组没有outer 方法,outer 只是numpy 模块中的一个普通函数。你可以像 numpy.outer(x, y) 一样使用它
  • 如果我执行 numpy.outer,我只会收到此错误:AttributeError: 'numpy.ndarray' object has no attribute 'outer'。并不是我想将我的 ndarray(它是一维的)转换为一个数组,这只是我想做我的外部产品的事情。但如果有其他方法,我可以试试
  • 您是否调用了您的变量之一numpy?可以发minimal, complete, verifiable example吗?
  • Mea Culpa, numpy.outer 似乎有效。我只是认为这是一种方法并尝试了错误的方法。非常感谢您的帮助

标签: python numpy multidimensional-array


【解决方案1】:

outer 不是任何类的方法,它只是numpy 模块中的一个普通旧函数。

这是一个如何使用它的示例:

import numpy
x = numpy.array([1, 2, 3])
y = numpy.array([4, 5, 6])
# x.__class__ and y.__class__ are both 'numpy.ndarray'

outer_product = numpy.outer(x, y)
# outer_product has the value:
# array([[ 4,  5,  6],
#        [ 8, 10, 12],
#        [12, 15, 18]])

【讨论】:

    猜你喜欢
    • 2018-10-10
    • 2023-03-10
    • 2018-06-05
    • 2011-05-02
    • 2015-12-04
    • 2017-09-08
    • 2021-11-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多