首页 > 解决方案 > Python Numpy将矩阵添加到原始矩阵(更改原始矩阵)

问题描述

嗨,我想使用 Numpy 将一个矩阵添加到另一个矩阵。我可以添加两个矩阵,但似乎找不到将其添加到原始矩阵的方法。我总是得到一个结合两个矩阵的“新”矩阵。有没有办法用原始矩阵+另一个矩阵的总和替换矩阵?

谢谢!

编辑:代码:

for i in tqdm(range(len(x_test_da[y_test_orig == 6]))):
  x_test_da[y_test_orig == 6][i] += x_test_da[y_test_orig == 9][0]

标签: pythonnumpy

解决方案


这里的问题是您的循环没有写入x_test_da. 当你这样做

x_test_da[y_test_orig == 6][i] += ...

这相当于

temp = x_test_da[y_test_orig == 6]
temp[i] += ...

wheretemp是一个不受数组支持的x_test_da数组,因为x_test_da[y_test_orig == 6]是无法创建视图的高级索引操作。您正在写入由高级索引操作创建的新数组。

即使你的循环意味着你想要的,它仍然是非常低效的。它在每次迭代中重复不必要的求值工作,所花费的时间x_test_da[y_test_orig == 6]与循环的每次迭代x_test_da[y_test_orig == 9]成正比len(y_test_orig),并且它正在执行 Python 级循环以一次分配一个值,而不是将工作推送到 NumPy。

放下循环。让 NumPy 处理这个:

x_test_da[y_test_orig == 6] += x_test_da[y_test_orig == 9][0]

您不会以这种方式获得 tqdm 进度条,但与原始循环不同,这应该足够快以至于您不需要进度条。


推荐阅读