为什么我无法在代码中将1d数组重塑为2d数组?脾气暴躁的

时间:2020-03-19 18:04:32

标签: python arrays numpy multidimensional-array

我遇到了问题,希望您能帮助我。 因此,我正在编写代码以使用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)

我做错了什么?我尝试了不同的方法,但似乎没有任何效果,因此,感谢您的帮助!

1 个答案:

答案 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和生成的数据的类型。