我很难选择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)
我知道这可以通过迭代数组并选择我需要的列值来完成.但是,这将在大数据阵列上频繁执行,这就是它必须尽可能快地运行的原因.
我想知道是否有更好的解决方案?
谢谢.
我有一个任意形状的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