如何计算一个向量和一组向量之间的点积?
How do I calculate the dot product between one vector and a list of vectors?
我有一个向量和矩阵 H 的特征向量,我想用数组中的每个向量求 V1 上的点积。
我想将向量 PhiZero
与为 H
计算的每个特征向量相乘
import numpy as np
import scipy.linalg as la
import math
import networkx as nx
Alpha = []
n=3
p=0.5
G = nx.gnp_random_graph(n,p)
A = nx.to_numpy_matrix(G)
w = np.zeros(shape=(n,n))
w[1,2] = 1
gamma = 1/(n*p)
H = (-w) - (gamma * A)
我在 w 中选择了一个随机位置,
evals, evecs = la.eig(H)
PhiZero = np.reciprocal(math.sqrt(n)) * np.ones((n,1), dtype=int)
我试过用两种方法计算它,第一种方法,我得到一个 3x3 矩阵
Alpha = np.dot(PhiZero.transpose(), evecs)
另一种方式,我用 for
循环试过:
for y in evecs:
alphaJ = np.dot(PhiZero.transpose(), evecs)
Alpha.append(alphaJ)
我已经采用转置 PhiZero 使尺寸与 evecs (1x3 & 3x1) 对齐
在你的第二种方法中,你不应该:
alphaJ = np.dot(PhiZero.transpose(), y)
而不是
alphaJ = np.dot(PhiZero.transpose(), evecs)
?
如果我尝试你的第一个例子,它有效:
import numpy as np
import scipy.linalg as la
import math
import networkx as nx
Alpha = []
n=3
p=0.5
G = nx.gnp_random_graph(n,p)
A = nx.to_numpy_matrix(G)
w = np.zeros(shape=(n,n))
w[1,2] = 1
gamma = 1/(n*p)
H = (-w) - (gamma * A)
evals, evecs = la.eig(H)
PhiZero = np.reciprocal(math.sqrt(n)) * np.ones((n,1), dtype=int)
Alpha = np.dot(PhiZero.transpose(), evecs)
print(Alpha)
给予
[[ 0.95293215 -0.32163376 0.03179978]]
如果你运行这个,你确定你得到一个 3x3 吗?
我有一个向量和矩阵 H 的特征向量,我想用数组中的每个向量求 V1 上的点积。
我想将向量 PhiZero
与为 H
import numpy as np
import scipy.linalg as la
import math
import networkx as nx
Alpha = []
n=3
p=0.5
G = nx.gnp_random_graph(n,p)
A = nx.to_numpy_matrix(G)
w = np.zeros(shape=(n,n))
w[1,2] = 1
gamma = 1/(n*p)
H = (-w) - (gamma * A)
我在 w 中选择了一个随机位置,
evals, evecs = la.eig(H)
PhiZero = np.reciprocal(math.sqrt(n)) * np.ones((n,1), dtype=int)
我试过用两种方法计算它,第一种方法,我得到一个 3x3 矩阵
Alpha = np.dot(PhiZero.transpose(), evecs)
另一种方式,我用 for
循环试过:
for y in evecs:
alphaJ = np.dot(PhiZero.transpose(), evecs)
Alpha.append(alphaJ)
我已经采用转置 PhiZero 使尺寸与 evecs (1x3 & 3x1) 对齐
在你的第二种方法中,你不应该:
alphaJ = np.dot(PhiZero.transpose(), y)
而不是
alphaJ = np.dot(PhiZero.transpose(), evecs)
?
如果我尝试你的第一个例子,它有效:
import numpy as np
import scipy.linalg as la
import math
import networkx as nx
Alpha = []
n=3
p=0.5
G = nx.gnp_random_graph(n,p)
A = nx.to_numpy_matrix(G)
w = np.zeros(shape=(n,n))
w[1,2] = 1
gamma = 1/(n*p)
H = (-w) - (gamma * A)
evals, evecs = la.eig(H)
PhiZero = np.reciprocal(math.sqrt(n)) * np.ones((n,1), dtype=int)
Alpha = np.dot(PhiZero.transpose(), evecs)
print(Alpha)
给予
[[ 0.95293215 -0.32163376 0.03179978]]
如果你运行这个,你确定你得到一个 3x3 吗?