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条)

报告相同问题?

悬赏问题

  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 保护模式-系统加载-段寄存器
  • ¥15 电脑桌面设定一个区域禁止鼠标操作
  • ¥15 求NPF226060磁芯的详细资料