Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/348.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在python中获取两个一维数组的乘积_Python_Numpy - Fatal编程技术网

在python中获取两个一维数组的乘积

在python中获取两个一维数组的乘积,python,numpy,Python,Numpy,Matlab中的一些非常简单的东西,但我在Python中找不到。如何获取以下信息: x=np.array([1,2,3]) y=np.array([4,5,6,7]) z=x.T*y z= [[4,5,6,7], [8,10,12,14], [12,15,18,21]] 如 使用列表理解: x = [1, 2, 3] y = [4, 5, 6, 7] z = [[i * j for j in y] for i in x] 在科学python中,这将是一个外部产品np.outer(x,y

Matlab中的一些非常简单的东西,但我在Python中找不到。如何获取以下信息:

x=np.array([1,2,3])
y=np.array([4,5,6,7])

z=x.T*y
z= 
[[4,5,6,7],
[8,10,12,14],
[12,15,18,21]]


使用列表理解:

x = [1, 2, 3]
y = [4, 5, 6, 7]
z = [[i * j for j in y] for i in x] 

在科学python中,这将是一个外部产品
np.outer(x,y)

见:

在MATLAB中,
size(x)
(1,3)
。所以
x'
(3,1)
。将其乘以
y
,即
(1,4)
,生成
(3,4)
形状

numpy
中,
x.shape
(3,)
<代码>x.T是相同的。因此,要获得相同的外积,需要扩展
x
y
的维度。一种方法是使用
重塑

z = x.reshape(3,1)* y.reshape(1,4)
numpy
还允许您使用
newaxis
索引来执行此操作(
None
也可以)。如果需要,它还会自动添加起始
newaxis
。这也起到了作用:

z = x[:,np.newaxis]*y
np.outer
就是这样做的(稍加修饰):
a.ravel()[:,newaxis]*b.ravel()[newaxis,:]


numpy

z = np.einsum('i,j->ij',x,y)
它基于物理学中流行的索引符号,在编写更复杂的内部(dot)产品时特别有用

z = x[:,np.newaxis]*y
z = np.einsum('i,j->ij',x,y)