Bull's-eye 2020-04-22 16:45 采纳率: 0%
浏览 5330
已采纳

python(numpy)中,如何根据条件来修改某个矩阵中的值?

假设有一变量 x_1,x_1的值为[1:10]中的某一个。还有bay_1,bay_2,...bay_10.共10个矩阵。

我想让x_1=1时,对bay_1矩阵进行操作(更新数据),x_1=2时,对bay_2矩阵进行操作,其余同理。

下面代码是其中的一部分,以此举例。(python3.7)

    import numpy as np
    bay_7 = [[121, 7, 1, 1, 1], [122, 7, 2, 1, 1], [123, 7, 3, 1, 1], [124, 7, 4, 1, 1], [125, 7, 5, 1, 1], [126, 7, 1, 2, 0], [127, 7, 2, 2, 1],
         [128, 7, 3, 2, 1], [129, 7, 4, 2, 1], [130, 7, 5, 2, 1], [131, 7, 1, 3, 0], [132, 7, 2, 3, 1], [133, 7, 3, 3, 1], [134, 7, 4, 3, 1],
         [135, 7, 5, 3, 1], [136, 7, 1, 4, 0], [137, 7, 2, 4, 0], [138, 7, 3, 4, 1], [139, 7, 4, 4, 0], [140, 7, 5, 4, 0]]
    bay_7 = np.array(bay_7)
    x_1 = [133, 7, 3, 3, 0]

如果我用下面这行代码来对bay_7进行修改,倒是可行,

    bay_7[np.where(bay_7[:, 0]==x_1[0])]=x_1

其他的矩阵也可以用if,elif语句逐个进行判断,但是我想用eval这类的函数对它进行操作,就是为了简化代码。然后我自己写的eval代码如下:

    eval('bay_'+str(x_1[1])+'[np.where(bay_'+str(x_1[1])+'[:,0]==x_1[0])] = x_1')

然后他就提示我如下错误:

eval('bay_'+str(x_1[1])+'[np.where(bay_'+str(x_1[1])+'[:,0]==x_1[0])] = x_1')
File "", line 1
bay_7[np.where(bay_7[:,0]==x_1[0])] = x_1
^
SyntaxError: invalid syntax
请问,这种问题要怎么修改才可行?

  • 写回答

1条回答 默认 最新

  • little student 2020-04-22 20:03
    关注
    eval('bay_' + str(x_1[1]))[np.where(eval('bay_' + str(x_1[1]))[:, 0]==x_1[0])]=x_1
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥20 如何推断此服务器配置
  • ¥15 关于github的项目怎么在pycharm上面运行
  • ¥15 内存地址视频流转RTMP
  • ¥100 有偿,谁有移远的EC200S固件和最新的Qflsh工具。
  • ¥15 找一个QT页面+目标识别(行人检测)的开源项目
  • ¥15 有没有整苹果智能分拣线上图像数据
  • ¥20 有没有人会这个东西的
  • ¥15 cfx考虑调整“enforce system memory limit”参数的设置
  • ¥30 航迹分离,航迹增强,误差分析
  • ¥15 Chrome Manifest扩展引用Ajax-hook库拦截请求失败