我遇到了问题,希望您能帮助我。 因此,我正在编写代码以使用networkx和numpy计算最短路径长度,因此我创建了一个函数来实现此目的,
def costos(red, precios):
pathlength = []
for i in redes: #3d array with 100 2D arrays
graph = nx.from_numpy_array(i, create_using = nx.DiGraph)
pathlength.append(nx.shortest_path_length(graph, 0, 1, weight = 'weight'))
y = np.array(pathlenght)
z = np.shape(y)
return y, z
当我打印结果时,我得到下一个输出
[25, 10, 32, ..., 20] #A 1D array with 100 elements (shortest path length)
(100,) #Shape of the 1D array
我想要的是将大小为(100,)的一维数组转换为大小为(10,10)的二维数组,我知道我可以使用np.reshape
,但是当我将其添加到函数中时这个
for i in redes: #3d array with 100 arrays
graph = nx.from_numpy_array(i, create_using = nx.DiGraph)
pathlength.append(nx.shortest_path_length(graph, 0, 1, weight = 'weight'))
y = np.array(pathlenght)
z = np.shape(y)
w = np.reshape(y, (10,10))
我收到下一个值错误
无法将大小为1的数组重塑为形状(10,10)
我做错了什么?我尝试了不同的方法,但似乎没有任何效果,因此,感谢您的帮助!
答案 0 :(得分:0)
基于这个事实,我无法复制您的错误。我创建了自己的输出: 将numpy导入为np
arr = np.arange(100)
print(arr.shape)
print(arr.dtype)
返回以下内容的大小: (100,) int64
当我现在使用np.reshape
时,它的工作原理就是这样。
print(arr.reshape((10, 10)))
具有以下输出:
[[ 0 1 2 3 4 5 6 7 8 9]
[10 11 12 13 14 15 16 17 18 19]
[20 21 22 23 24 25 26 27 28 29]
[30 31 32 33 34 35 36 37 38 39]
[40 41 42 43 44 45 46 47 48 49]
[50 51 52 53 54 55 56 57 58 59]
[60 61 62 63 64 65 66 67 68 69]
[70 71 72 73 74 75 76 77 78 79]
[80 81 82 83 84 85 86 87 88 89]
[90 91 92 93 94 95 96 97 98 99]]
如果该示例无济于事,请指定一个示例来复制或至少指定数组的dtype和生成的数据的类型。