abumelq 2021-04-20 22:10 采纳率: 100%
浏览 74
已采纳

numpy矩阵遍历元素失败

a是一个网络图的邻接矩阵,维数是185x185,通过如下代码获得:

a = nx.to_numpy_matrix(G)

然后运行如下代码,N是矩阵维数:

b = np.empty([N, N])
for i in range(N):
    for j in range (N):
        if a[i][j] != 0:
            b[i][j] = random.uniform(0,1)

报错提示如下,网上查找资料说到了布尔值类型:

 if a[i][j] != 0:
ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()

 

但是当我自己用numpy定义一个3x3矩阵,进行for循环时并没有报错。


我想请教下怎么解决numpy矩阵以如上方式遍历的问题。
  • 写回答

3条回答 默认 最新

  • CSDN专家-HGJ 2021-04-21 10:43
    关注

    可先将G进行类型转换为数组,用nx.to_numpy_array(),转换后就可直接进行后面遍历修改元素的操作了。举例:

    import networkx as nx
    import numpy as np
    import random
    G = np.array(np.random.randint(0,100,100)).reshape(10,10)
    print(G)
    #a = nx.to_numpy_matrix(G)
    b = np.empty([10, 10])
    for i in range(10):
        for j in range(10):
            if G[i][j] >50:
                b[i][j] = random.uniform(0, 1)
            else:
                b[i][j]=G[i][j]
    print(b)
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?