python - 使用切片/索引在矩阵内切换 numpy 向量

标签 python pandas numpy

让我们考虑以下矩阵:

[v1 v2 v3 v4 v5 v6] = 
[[1., 0., 0., 0., 0., 0.],
[0., 0., 1., 0., 0., 0.],
[0., 1., 0., 0., 0., 0.],
[0., 0., 0., 1., 0., 0.],
[0., 0., 0., 0., 0., 1.],
[0., 0., 0., 0., 1., 0.]],

其中向量 [v2 v3] 和 [v5 v6] 相对于单位矩阵进行交换。

从单位矩阵开始,我们如何使用切片/索引构建先前的矩阵?

如果想明确地做到这一点,我们应该执行以下操作:

x = np.eye(6)
x[[1,2]] = x[[2,1]]
x[[4,5]] = x[[5,6]]

最佳答案

可扩展到任何N的向量解决方案:

N=2
s = np.zeros((3*N,3*N))
pattern = [[1,0,0],[0,0,1],[0,1,0]]
s.reshape(N,3,N,3)[range(N),:,range(N),:] = pattern

对于

array([[1., 0., 0., 0., 0., 0.],
       [0., 0., 1., 0., 0., 0.],
       [0., 1., 0., 0., 0., 0.],
       [0., 0., 0., 1., 0., 0.],
       [0., 0., 0., 0., 0., 1.],
       [0., 0., 0., 0., 1., 0.]])

关于python - 使用切片/索引在矩阵内切换 numpy 向量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54732283/

相关文章:

python - python 字符串连接问题

python - 使用 DNNRegressor 的损失函数是什么?

python - pandas 数据框,将 index_col 设置为我的 csv 名称

python - 在python的数据框中查找每一行中的最大值

python - Pandas DataFrame 操作和转换

python - GLCM 图像中的黑色空间

python - 如何根据每行中的值复制 numpy 数组中的行

Python3无法安装bcrypt

pandas - 如果失败,继续对下一个 groupby 组进行 qcut?

python - 如何从某一行开始将 numpy 数组写入 .txt 文件?