numpy中两个数组的乘法

时间:2015-04-24 13:27:15

标签: python arrays python-2.7 numpy multiplication

我有两个numpy数组:

[[3, 6],
 [4, 8]]

我想创建一个元素产品矩阵:

create table dbo.DegreeLevel 
( 
    Id int identity not null
       constraint PK_DegreeLevel_Id primary key clustered (Id),
    Name nvarchar (80) not null
       constraint UQ_DegreeLevel_Name unique (Name)
)

最简单的方法是什么?

3 个答案:

答案 0 :(得分:6)

一种方法是使用outer的{​​{1}}功能(如果您想要与问题中的顺序相同,则进行转置):

np.multiply

NumPy中的大多数ufunc都有这个有用的>>> np.multiply.outer(x, y).T array([[3, 6], [4, 8]]) 功能(outeraddsubtract等。作为@Akavall suggestsdivide与此处的乘法情况相同。

或者,np.einsum可以一次执行乘法和转置:

np.outer

第三种方法是在一个数组中插入一个新轴然后相乘,尽管这有点冗长:

>>> np.einsum('i,j->ji', x, y)
array([[3, 6],
       [4, 8]])

对于那些对性能感兴趣的人,以下是两个长度为15的数组的操作时间,从最快到最慢:

>>> (x[:, np.newaxis] * y).T
array([[3, 6],
       [4, 8]])

答案 1 :(得分:3)

您可以使用np.outer

In [7]: x = np.array([1, 2])

In [8]: y = np.array([3, 4])

In [10]: np.outer(x,y).T
Out[10]: 
array([[3, 6],
       [4, 8]])

答案 2 :(得分:0)

B = np.multiply.outer(x,y).T

链接: http://pchanial.github.io/python-for-data-scientists/auto_examples/ufunc_matrices.html

这是这个问题的一个很好的教程 这个地址可以提供帮助:http://wiki.scipy.org/Tentative_NumPy_Tutorial