gpt4 book ai didi

Python numpy 数组索引。这是如何工作的?

转载 作者:太空宇宙 更新时间:2023-11-03 11:51:02 26 4
gpt4 key购买 nike

我遇到了这个 python 代码(有效),对我来说它看起来很神奇。但是,我无法弄清楚这段代码在做什么。为了复制它,我编写了一段测试代码:

import numpy as np

# Create a random array which represent the 6 unique coeff.
# of a symmetric 3x3 matrix
x = np.random.rand(10, 10, 6)

所以,我有 100 个对称的 3x3 矩阵,我只存储唯一的组件。现在,我想生成完整的 3x3 矩阵,这就是神奇的地方。

indices = np.array([[0, 1, 3],
[1, 2, 4],
[3, 4, 5]])

我明白这是在做什么。这就是0-5索引分量在3x3矩阵中的排列方式,以具有对称矩阵。

mat = x[..., indices]

这条线让我迷路了。因此,它正在处理 x 数组的最后一个维度,但我完全不清楚重新排列和 reshape 是如何完成的,但这确实返回了一个形状数组 (10, 10, 3, 3)。我很惊讶也很困惑!

最佳答案

来自高级索引文档 - bi rico 的链接。

Example

Suppose x.shape is (10,20,30) and ind is a (2,3,4)-shaped indexing intp array, thenresult = x[...,ind,:] has shape (10,2,3,4,30) because the (20,)-shaped subspace has been replaced with a (2,3,4)-shaped broadcasted indexing subspace. If we let i, j, kloop over the (2,3,4)-shaped subspace then result[...,i,j,k,:] =x[...,ind[i,j,k],:]. This example produces the same result as x.take(ind, axis=-2).

关于Python numpy 数组索引。这是如何工作的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27851051/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com