相关疑难解决方法(0)

NumPy使用索引列表选择每行的特定列索引

我很难选择NumPy矩阵每行的特定列.

假设我有以下矩阵,我会称之为X:

[1, 2, 3]
[4, 5, 6]
[7, 8, 9]
Run Code Online (Sandbox Code Playgroud)

我还会list调用每行的列索引Y:

[1, 0, 2]
Run Code Online (Sandbox Code Playgroud)

我需要获取值:

[2]
[4]
[9]
Run Code Online (Sandbox Code Playgroud)

取而代之的是list使用索引Y,我还可以产生一个矩阵具有相同的形状X,每一个列是bool/ int范围在0-1之间的值,表明这是否是必需的列.

[0, 1, 0]
[1, 0, 0]
[0, 0, 1]
Run Code Online (Sandbox Code Playgroud)

我知道这可以通过迭代数组并选择我需要的列值来完成.但是,这将在大数据阵列上频繁执行,这就是它必须尽可能快地运行的原因.

我想知道是否有更好的解决方案?

谢谢.

python numpy python-2.7

69
推荐指数
4
解决办法
3万
查看次数

numpy:如何从argmax结果中获得最大值

我有一个任意形状的numpy数组,例如:

a = array([[[ 1,  2],
            [ 3,  4],
            [ 8,  6]],

          [[ 7,  8],
           [ 9,  8],
           [ 3, 12]]])
a.shape = (2, 3, 2)
Run Code Online (Sandbox Code Playgroud)

和argmax在最后一个轴上的结果:

np.argmax(a, axis=-1) = array([[1, 1, 0],
                               [1, 0, 1]])
Run Code Online (Sandbox Code Playgroud)

我想得到最大值:

np.max(a, axis=-1) = array([[ 2,  4,  8],
                            [ 8,  9, 12]])
Run Code Online (Sandbox Code Playgroud)

但没有重新计算一切.我试过了:

a[np.arange(len(a)), np.argmax(a, axis=-1)]
Run Code Online (Sandbox Code Playgroud)

但得到了:

IndexError: shape mismatch: indexing arrays could not be broadcast together with shapes (2,) (2,3) 
Run Code Online (Sandbox Code Playgroud)

怎么做?类似的问题2-d:numpy 2d array max/argmax

python numpy argmax

4
推荐指数
1
解决办法
1525
查看次数

标签 统计

numpy ×2

python ×2

argmax ×1

python-2.7 ×1