gpt4 book ai didi

python - numpy array 每个元素与矩阵相乘

转载 作者:行者123 更新时间:2023-11-28 16:41:24 24 4
gpt4 key购买 nike

我有一个矩阵

A = [[ 1.  1.]
[ 1. 1.]]

和两个数组(ab),每个数组包含 20 个 float 如何乘以使用公式:

( x'    = A * ( x )
y' ) y

这是正确的吗? m = A * [a, b]

最佳答案

矩阵与 NumPy 数组的乘法可以用 np.dot 完成.如果 X 的形状为 (i,j) 而 Y 的形状为 (j,k) 那么 np.dot(X,Y) 将是矩阵乘积,形状为 (i,k)。 X 的最后一个轴和 Y 的倒数第二个轴相乘并求和。

现在,如果 ab 的形状为 (20,),则 np.vstack([a,b] ) 的形状为 (2, 20):

In [66]: np.vstack([a,b]).shape
Out[66]: (2, 20)

您可以将 np.vstack([a, b]) 视为一个 2x20 矩阵,第一行的值为 ab 在第二行。

由于 A 的形状为 (2,2),我们可以执行矩阵乘法

m = np.dot(A, np.vstack([a,b]))

得到形状为 (2, 20) 的数组。m 的第一行包含 x' 值,第二行包含 y' 值。


NumPy 也有 ndarraymatrix 子类(一种特殊的 NumPy 数组),它具有方便的语法,可以与二维数组进行矩阵乘法。如果我们将 A 定义为 matrix(而不是普通的 ndarraynp.array(...) 创建),然后可以使用 * 运算符进行矩阵乘法。

我在下面展示了两种方式(A 是一个普通的 ndarrayA2 是一个 matrix):

import numpy as np

A = np.array([[1.,1.],[1.,1.]])
A2 = np.matrix([[1.,1.],[1.,1.]])
a = np.random.random(20)
b = np.random.random(20)
c = np.vstack([a,b])

m = np.dot(A, c)
m2 = A2 * c

assert np.allclose(m, m2)

关于python - numpy array 每个元素与矩阵相乘,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18881741/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com