python - 如何计算一个向量和向量列表之间的点积?
问题描述
我有一个向量和矩阵 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 吗?
推荐阅读
- java - 如何获取用户节点内选定用户的用户 ID?
- azure - 如果提供了 DelimitedTextConfiguration,则无法使用查询 Blob 内容 API 查询 Azure Blob 存储
- r - 使用 ggraph 在二分网络中指定节点形状和标签
- javascript - 使用javascript将wmf转换为png
- web-scraping - 如何从 python 请求帖子中获取文本或 json 数据
- node.js - NVM 不能在 ZSH 上工作,但在 Bash 上 - M1 Mac Mini
- matplotlib - 在散点图上绘制水平平均线/平均线
- azure-devops - 如何在 python 脚本中访问秘密变量
- mysql - Xampp localhost/phpmyadmin: (HY000/2006): MySQL 服务器已经消失
- flutter - 如何在颤动中使用图像选择图像创建表单?