首页 > 解决方案 > TypeError:'float' 对象不可调用(代入公式)

问题描述

当发现 travtimes 错误出现在倒数第 3 行时,这是由于尝试将流量代入 adj 中的 lambda 公式的结果,代码如下:

import numpy as np

edges = np.array([[0, 1, lambda N: N/100],
                  [0, 2, lambda N: 45],
                  [1, 3, lambda N: 45],
                  [2, 3, lambda N: N/100]])

nodes = np.unique(edges[:,0:2])

num_nodes = len(nodes)
adj = np.full((num_nodes, num_nodes), np.inf, dtype=object)

nodelen = len(edges)
for x in range(nodelen):
    edge = edges[x,:]  # 0, 1, lambda ... need to loop through edges
    first, second, func = edge
    adj[first, second] = func

flows = np.zeros_like(adj)
print(adj)
print(flows)
adjlen = len(adj)
y=0
travtimes = adj
travtimes.astype(dtype=object)
flows.astype(dtype=int)
while y < adjlen:
    for x in range(adjlen):
        travtimes[x,y] = travtimes[x,y](flows[x,y])
    y = y+1

print(travtimes)

标签: python

解决方案


推荐阅读