python - 将小矩阵中的值分配到大矩阵中的指定位置
问题描述
我想知道在 Python 中是否存在类似的方法(Mathematica): Mathematica
我已经在 Python 中尝试过,但它不起作用。我也尝试过使用简单的 2 个循环numpy.put()
或使用简单的 2 个for
循环。这两种方法可以正常工作,但我发现它们对于较大的矩阵(例如 3000×3000 元素)非常耗时。
用 Python 描述的问题,
import numpy as np
a = np.arange(0, 25, 1).reshape(5, 5)
b = np.arange(100, 500, 100).reshape(2, 2)
p = np.array([0, 3])
a[p][:, p] = b
输出不变的矩阵a
:Python
解决方案
也许您正在寻找这个:
a[p[...,None], p] = b
上述赋值后的数组a
如下所示:
[[100 1 2 200 4]
[ 5 6 7 8 9]
[ 10 11 12 13 14]
[300 16 17 400 19]
[ 20 21 22 23 24]]
如Integer Array Indexing中所述,两个整数索引数组将一起广播,并一起迭代,从而有效地索引位置a[0,0]
、a[0,3]
、a[3,0]
和a[3,3]
。a
然后,赋值语句将使用 RHS 中的相应元素值在 的这些位置执行元素赋值。
推荐阅读
- android - 使用新的 Flutter 2.2.2 版本为 Riverpod 运行“flutter pub get”时版本解决失败
- blockchain - web3上调用solidity合约函数时如何添加ETH作为参数
- r - 如何使用一组时间序列值的导数创建新列
- reactjs - 使用 React-Three-Fiber
- mql5 - mlq5 创建一个 gui 并有按钮来管理我的交易
- c# - logcat 中的“无法找到 advapi32”错误(在 Unity android 构建中)
- javascript - 从 webDriver localStorage 中提取不和谐令牌
- java - BigDecimal.setScale() 不返回正确的结果
- mysql - 如何查找发生行锁争用的表名?
- python - 如何按行获得组中的百分比?