numpy 如何在python中不使用for循环进行一些Tensor乘法?

huus2vyu  于 2022-11-24  发布在  Python
关注(0)|答案(2)|浏览(157)

假设我有两个数组X=[A,B,C]和Y=[D,E,F],其中每个元素都是一个3 × 3的矩阵。我想在不使用for循环的情况下创建一个数组Z=[AD,BE,CF]。我该怎么做?
我试过使用np.tensordot(X,Y,axis=1),但它返回9个乘积[[AD,AE,AF],[BD,BE,BF],[CD,CE,CF]]。麻烦的是每个元素的矩阵大小必须与数组长度相同,比如说对于3 x 3矩阵,X和Y应该各有3个元素。

pcww981p

pcww981p1#

你可以使用Tensor或流量。

>>> a = tf.constant([1, 2, 3])
>>> b = tf.constant([4, 5, 6])
>>> tf.transpose([a, b])
<tf.Tensor: shape=(3, 2), dtype=int32, numpy=
array([[1, 4],
       [2, 5],
       [3, 6]], dtype=int32)>

也可以使用zip

a = ("John", "Charles", "Mike")
b = ("Jenny", "Christy", "Monica")

x = zip(a, b)

(('John', 'Jenny'), ('Charles', 'Christy'), ('Mike', 'Monica'))
ezykj2lf

ezykj2lf2#

事实证明,答案非常简单,我只是使用np.matmul(X,Y)来达到我想要的结果。

相关问题