這裏生產的鄰接矩陣作爲2D numpy的陣列的一種方式。它假設輸入圖形數據是正確的,特別是它的長度是一個完美的正方形。
import numpy as np
graph_data = [
['A', 'A', 0], ['A', 'B', 5], ['A', 'C', 3],
['B', 'A', 5], ['B', 'B', 0], ['B', 'C', 6],
['C', 'A', 3], ['C', 'B', 6], ['C', 'C', 0],
]
size = np.sqrt(len(graph_data)).astype(np.int)
adjacency_matrix = np.array(graph_data)[:,-1].astype(np.int).reshape(size, size)
print(adjacency_matrix)
輸出
[[0 5 3]
[5 0 6]
[3 6 0]]
上面的代碼還假定圖數據是正確的順序,因爲它忽略的字母。當然,通過在嘗試將圖數據轉換爲數組之前排序圖數據很容易。例如,
graph_data.sort()
這裏的一個純Python版本輸出元組的列表:
graph_data = [
['A', 'A', 0], ['A', 'B', 5], ['A', 'C', 3],
['B', 'A', 5], ['B', 'B', 0], ['B', 'C', 6],
['C', 'A', 3], ['C', 'B', 6], ['C', 'C', 0],
]
graph_data.sort()
size = int(len(graph_data) ** 0.5)
it = iter(row[-1] for row in graph_data)
print(list(zip(*[it]*size)))
輸出
[(0, 5, 3), (5, 0, 6), (3, 6, 0)]
輸入= [[A,A,0] , [A,B,5], [A,C,3], [B,A,5], [B,B,0], [B,C,6], [C,A,3], [C,B,6], [C,C,0]] desiredOutput = [ [0,5,3], [5,0,6], [3,6,0]] – user3431083
我覺得像'pandas'這樣的模塊通常是您可以處理這些數據的方式。 –