suncyday 2022-08-07 14:06 采纳率: 83.3%
浏览 61
已结题

python矩阵块进行块插入的算法

你好,我想请问一下python能实现雷士C语言中的指针或地址的操作吗。
比如我想要定义某个矩阵为一个块,如

img

然后多个块直接拼接成一个更大的矩阵,如

img

这里我不想用类似for循环之类的一行行插入,这样时间复杂度会很高,我想要类似指针和地址的操作,一次直接插入一个块,我试图写这样一个代码测试

a=[[1,2],[2,1]]
b=[[1,2],[2,1]]
print(a.append(b))

但是输出结果为
None

这里我找到代码错误了

a=[[1,2],[2,1]]
b=[[1,2],[2,1]]
a.append(b)
print(a)

这样可以正确的输出了,但是我仍然不知道,这样写他是不是用了类似指针和地址的操作,还是他自动按一行行插入运算了

我测试过了,8*3000000的两个矩阵拼接,时间分别为21s和24s,除去算法优化的影响,两者时间几乎相近,应该内置函数依然是循环插入的

这里我还有个问题,像这种操作该怎么实现,不一行行算的话

直接生成1*n的矩阵
[[1],
[1],
.
.
.
[1]]
然后直接插入现有矩阵
[[0,2,6],
[5,2,3],
.
.
.
[7,2,5]]
变成
[[1,0,2,6],
[1,5,2,3],
.
.
.
[1,7,2,5]]

这里我还有个问题,像这种操作该怎么实现,不一行行算的话

原矩阵为
[[1,0,2,6],
[1,5,2,3],
.
.
.
[1,7,2,5]]

系数矩阵为
[[0,0,1,0],
[1,0,0,0],
.
.
.
[0,1,0,0]]
系数矩阵每行只有一个1,其余全是0,我要把系数矩阵乘以一个系数,比如乘2变成,
[[0,0,2,0],
[2,0,0,0],
.
.
.
[0,2,0,0]]
然后按照对应位置,将非0位置替换到原矩阵中,为
[[1,0,2,6],
[2,5,2,3],
.
.
.
[1,2,2,5]]

请问有什么办法可以实现我想要的结果,C语言也可以,最好能用python实现

  • 写回答

2条回答 默认 最新

  • Hann Yang 全栈领域优质创作者 2022-08-07 19:27
    关注
    >>> a = [[0,1,2,3],[0,2,3,1],[0,3,2,1]]
    >>> b = [[1,1,2,3],[1,2,3,1],[1,3,2,1]]
    >>> a.extend(b)
    >>> a
    [[0, 1, 2, 3], [0, 2, 3, 1], [0, 3, 2, 1], [1, 1, 2, 3], [1, 2, 3, 1], [1, 3, 2, 1]]
    >>> t = [[1]]*6
    >>> t
    [[1], [1], [1], [1], [1], [1]]
    >>> [i+j for i,j in zip(t,a)]
    [[1, 0, 1, 2, 3], [1, 0, 2, 3, 1], [1, 0, 3, 2, 1], [1, 1, 1, 2, 3], [1, 1, 2, 3, 1], [1, 1, 3, 2, 1]]
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 8月19日
  • 已采纳回答 8月11日
  • 修改了问题 8月7日
  • 修改了问题 8月7日
  • 展开全部

悬赏问题

  • ¥15 2020长安杯与连接网探
  • ¥15 关于#matlab#的问题:在模糊控制器中选出线路信息,在simulink中根据线路信息生成速度时间目标曲线(初速度为20m/s,15秒后减为0的速度时间图像)我想问线路信息是什么
  • ¥15 banner广告展示设置多少时间不怎么会消耗用户价值
  • ¥16 mybatis的代理对象无法通过@Autowired装填
  • ¥15 可见光定位matlab仿真
  • ¥15 arduino 四自由度机械臂
  • ¥15 wordpress 产品图片 GIF 没法显示
  • ¥15 求三国群英传pl国战时间的修改方法
  • ¥15 matlab代码代写,需写出详细代码,代价私
  • ¥15 ROS系统搭建请教(跨境电商用途)