我有两个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)
)
最简单的方法是什么?
答案 0 :(得分:6)
一种方法是使用outer
的{{1}}功能(如果您想要与问题中的顺序相同,则进行转置):
np.multiply
NumPy中的大多数ufunc都有这个有用的>>> np.multiply.outer(x, y).T
array([[3, 6],
[4, 8]])
功能(outer
,add
,subtract
等。作为@Akavall suggests,divide
与此处的乘法情况相同。
或者,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