【问题标题】:Letter number combo to float in python在python中浮动的字母数字组合
【发布时间】:2021-02-16 01:28:14
【问题描述】:
def computefeatures(node_id):
    return [ord(node_id), len(node_id)]

我正在计算节点 ID 的特征,这些特征是字母和数字的组合。 ord 不起作用,是否有其他解决方法。

我的清单是:

ln0
Out[88]: 
0     C1
1     C2
2     C3
3     C4
4     C5
5     C6
6     G1
7     I1
8     O1
9     P1
10    P2
11    P3
12    R1
13    R2
14    R3
15    R4
16    R5
17    R6
dtype: object

【问题讨论】:

  • 不清楚您要做什么。输入是什么?输出应该是什么?
  • 第一个问题是您似乎正在将像“C1”这样的字符串传递给“ord”函数。 ord() 接受一个字符(单个字符),而不是一个字符串。除此之外,您需要提供更多信息以获得任何有意义的帮助
  • 抱歉,每个字母数字组合都是图中一个节点的标签。我正在尝试使用节点 ID 计算一个简单的节点特征。需要一个浮点数。
  • 您是否想提出一个基本上任意散列的节点 ID 到浮点数?

标签: python pandas networkx stellargraph


【解决方案1】:

如果您的节点由一个字母后跟一个整数组成,而您只想将它​​们映射到浮点数,则可以通过多种方式完成。

一种方法是将您的 node_id 转换为浮点方法 hex 返回的十六进制字符串(例如,(3.14).hex() = '0x1.91eb851eb851fp+1')。取字母的ord,将其转换为十六进制字符串,并将其用作尾数的小数部分。取整数部分并将其用作指数。创建字符串后,使用类方法 float.fromhex 将其映射到浮点数:

def compute_feature(node_id):
    n = ord(node_id[0])
    i = node_id[1:]
    hex_string = '0x1.' + hex(n)[2:] + 'p+' + i
    return float.fromhex(hex_string)

例如,

>>> compute_feature('C1')
2.5234375

这种方法有一个很好的特性,你可以使用float方法hex和少量的解析来从float中恢复节点id。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-22
    • 1970-01-01
    • 2016-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-27
    相关资源
    最近更新 更多