Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/326.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_Matrix - Fatal编程技术网

Python 两个矩阵列之间的叉积

Python 两个矩阵列之间的叉积,python,numpy,matrix,Python,Numpy,Matrix,给定两个矩阵和维数adxn,我要计算。你能建议一种矢量化的方法来做这样的计算吗 谢谢大家! 还有另一种方法: np.sum(x*y, axis=0) 效率: x = np.random.randint(0, 10, size=(30, 400)) y = np.random.randint(0, 10, size=(30, 400)) %timeit np.sum(x*y, axis=0) # 38.4 µs ± 942 ns per loop (mean ± std. dev. of 7

给定两个矩阵和维数a
dxn
,我要计算。你能建议一种矢量化的方法来做这样的计算吗


谢谢大家!

还有另一种方法:

np.sum(x*y, axis=0)
效率:

x = np.random.randint(0, 10, size=(30, 400))
y = np.random.randint(0, 10, size=(30, 400))

%timeit np.sum(x*y, axis=0)
# 38.4 µs ± 942 ns per loop (mean ± std. dev. of 7 runs, 10000 loops each)

%timeit for i in range(len(x.T)): x[:, i].dot(y[:, i].T)   
# 1.01 ms ± 19 µs per loop (mean ± std. dev. of 7 runs, 1000 loops each)

%timeit np.diag(x.T.dot(y))
# 6.57 ms ± 248 µs per loop (mean ± std. dev. of 7 runs, 100 loops each)

下面是另一种方法:

np.sum(x*y, axis=0)
效率:

x = np.random.randint(0, 10, size=(30, 400))
y = np.random.randint(0, 10, size=(30, 400))

%timeit np.sum(x*y, axis=0)
# 38.4 µs ± 942 ns per loop (mean ± std. dev. of 7 runs, 10000 loops each)

%timeit for i in range(len(x.T)): x[:, i].dot(y[:, i].T)   
# 1.01 ms ± 19 µs per loop (mean ± std. dev. of 7 runs, 1000 loops each)

%timeit np.diag(x.T.dot(y))
# 6.57 ms ± 248 µs per loop (mean ± std. dev. of 7 runs, 100 loops each)

按照你展示Y和X的方式,它们似乎是一维的vectors@BradSolomon每个y^(i)或x^(i)都是维度D的列向量。谢谢!使用
numpy
示例,而不是数学符号。这看起来不像是一个数学上的叉积(参见
np.cross
),它更像是某种元素形式的乘积。
Y*X
有什么问题吗?按照您呈现Y和X的方式,它们似乎是一维的vectors@BradSolomon每个y^(i)或x^(i)都是维度D的列向量。谢谢!使用
numpy
示例,而不是数学符号。这看起来不像是一个数学上的叉积(参见
np.cross
),它更像是某种元素形式的乘积。
Y*X
有什么问题吗?
np.einsum('ij,ij->j',X,Y,optimize=False)
甚至更快。确实如此。甚至都不知道这个存在。谢谢<代码>10µs±25.7 ns/循环(7次运行的平均值±标准偏差,每个循环100000次)
np.einsum('ij,ij->j',x,y,optimize=False)
甚至更快。确实如此。甚至都不知道这个存在。谢谢<代码>10µs±25.7 ns/圈(7次运行的平均值±标准偏差,每个100000圈)