Python 两个矩阵列之间的叉积
给定两个矩阵和维数aPython 两个矩阵列之间的叉积,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
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圈)