TUNGraph
:无向图
TNGraph
:有向图
TNEANet
:在节点和边上具有属性的多重图
在snap.py中,如果要使用图或者网络的具体实例,则要相对应地使用PUNGraph
、PNGraph
和PNEAnet
。
Snap.py does not directly use instances of the graph and network classes, but utilizes smart pointers to those instances instead. The actual instances in the Python program are of type PUNGraph, PNGraph, or PNEAnet and correspond to TUNGraph, TNGraph, and TNEAnet, respectively.
In general, if you need to call a class method, use T and if you need to specify an instance type, use P.
G1 = snap.TNGraph.New()
G2 = snap.GenRndGnm(snap.PNGraph, 100, 1000)
G1 = snap.TNGraph.New()
G1.AddNode(1)
G1.AddNode(5)
G1.AddNode(12)
G1.AddEdge(1,5)
G1.AddEdge(5,1)
G1.AddEdge(5,12)
G2 = snap.TUNGraph.New()
N1 = snap.TNEANet.New()
遍历图中的节点和边:
for NI in G1.Nodes():
print("node id %d, out-degree %d, in-degree %d" % (NI.GetId(), NI.GetOutDeg(), NI.GetInDeg()))
'''out:
node id 1, out-degree 1, in-degree 1
node id 5, out-degree 2, in-degree 1
node id 12, out-degree 0, in-degree 1
for EI in G1.Edges():
print("(%d, %d)" % (EI.GetSrcNId(), EI.GetDstNId()))
'''out:
(1, 5)
(5, 1)
(5, 12)
for NI in G1.Nodes():
for DstNId in NI.GetOutEdges():
print("edge (%d %d)" % (NI.GetId(), DstNId))
'''out:
edge (1 5)
edge (5 1)
edge (5 12)
图的存储和加载
snap.SaveEdgeList(G1, "test.txt", "List of edges")
G2 = snap.LoadEdgeList(snap.PNGraph,"test.txt",0,1)
FOut = snap.TFOut("test.graph")
G2.Save(FOut)
FOut.Flush()
FIn = snap.TFIn("test.graph")
G4 = snap.TNGraph.Load(FIn)
可以看到存储的text文件如下:
课程链接:CS224W: Machine Learning with Graphs课程视频:【课程】斯坦福 CS224W: 图机器学习 (2019 秋 | 英字)目录1. SNAP简介2. snap中方法的一些命名惯例3. 基本教程3.1 基本类型3.2 向量类型(Vector type)3.3 哈希表类型(Hash Table Type)3.4 Pair Type3.5 图和网络类(Basic Graph and Network Classes)1. SNAP简介Stanford Networ.
三角测量(triangulation), 就是在不同的姿态下观察同一个对象,根据图像上的同名点的像素坐标,计算对象的三维坐标。
在双目视觉中,分左右相机,同时可以获得左视图和右视图,根据匹配的同名点和左右相机的投影矩阵,就可以计算出匹配同名点的世界坐标。
如图: O1和O2相机的投影的像素点为p, p’;P为世界坐标点的齐次坐标。
首先对两个相机进行标定,并获得投影矩阵分别是T1 和 T2, T1和T2的大小为3x4的矩阵。
p=[uv1]p′=[u′v′1]
p = \left[\begin{mat
Stanford Snap.py for Python学习记录如何下载安装新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入
如何下载安装
目前已经出到了2020年发布的6.0版本,下载安装使用的话可以直接在anaconda的
SNAP是一种用于分析和操纵大型网络的通用高性能系统。 SNAP是用C ++编写的,并针对最高性能和紧凑图形表示进行了优化。 它可以轻松扩展到拥有数亿个节点和数十亿边缘的大型网络。
Snap.py提供了SNAP的性能优势,并结合了Python的灵活性。 大多数SNAP功能都可以通过Python中的Snap.py获得
笔者这里实践了相关API,并查看了其性能。具体解释看说明文档,其中
grap...
这个错误通常出现在使用 MyBatis 进行数据库操作时,表示 MyBatis 找不到 cellphone 属性对应的 TypeHandler。
解决方法是为 cellphone 属性指定一个合适的 TypeHandler。TypeHandler 是 MyBatis 中用于处理 Java 对象与数据库类型之间转换的组件。你需要自定义一个 TypeHandler,实现 Java 对象与数据库类型之间的转换,并在 MyBatis 配置文件中将其注册。
以下是一个简单的 TypeHandler 示例:
```java
public class CellphoneTypeHandler extends BaseTypeHandler<String> {
@Override
public void setNonNullParameter(PreparedStatement ps, int i, String parameter, JdbcType jdbcType) throws SQLException {
ps.setString(i, parameter);
@Override
public String getNullableResult(ResultSet rs, String columnName) throws SQLException {
return rs.getString(columnName);
@Override
public String getNullableResult(ResultSet rs, int columnIndex) throws SQLException {
return rs.getString(columnIndex);
@Override
public String getNullableResult(CallableStatement cs, int columnIndex) throws SQLException {
return cs.getString(columnIndex);
这个 TypeHandler 可以处理 String 类型的 cellphone 属性。在 MyBatis 配置文件中注册这个 TypeHandler:
```xml
<typeHandlers>
<typeHandler handler="com.example.CellphoneTypeHandler" javaType="java.lang.String"/>
</typeHandlers>
注意要将 com.example.CellphoneTypeHandler 替换成你自定义的 TypeHandler 类的全限定名。此外,javaType 属性指定了该 TypeHandler 能够处理的 Java 类型,这里是 String。在你的实体类中,为 cellphone 属性加上 @TypeHandler 注解即可:
```java
public class User {
private Integer id;
private String name;
@TypeHandler(CellphoneTypeHandler.class)
private String cellphone;
// ...
这样 MyBatis 在操作数据库时就会使用你自定义的 TypeHandler 来处理 cellphone 属性了。