Python 提取NumPy数组中具有最大和的n列

Python 提取NumPy数组中具有最大和的n列,python,numpy,Python,Numpy,假设我有一个100行1000列的NumPy矩阵 如何获得由原始矩阵中具有最高和的n列组成的新矩阵?您可以使用@NPE所做的np.argsort。以下是两个较小阵列的示例: def nlargest_cols(a, n): return a[:, sorted(a.sum(axis=0).argsort()[-n:][::-1])] # `a` is a 3x4 array with column sums getting # larger from left to right.

假设我有一个100行1000列的NumPy矩阵


如何获得由原始矩阵中具有最高和的n列组成的新矩阵?

您可以使用@NPE所做的
np.argsort
。以下是两个较小阵列的示例:

def nlargest_cols(a, n):
    return a[:, sorted(a.sum(axis=0).argsort()[-n:][::-1])]

# `a` is a 3x4 array with column sums getting
#     larger from left to right.
a = np.arange(12).reshape(3,4)

# `b` is `a` rotated 2 turns.
b = np.rot90(a, 2)

print(nlargest_cols(a, 2))
# [[ 2  3]
#  [ 6  7]
#  [10 11]]

print(nlargest_cols(b, 3))
# [[11 10  9]
#  [ 7  6  5]
#  [ 3  2  1]]

您可以像@NPE一样使用
np.argsort
。以下是两个较小阵列的示例:

def nlargest_cols(a, n):
    return a[:, sorted(a.sum(axis=0).argsort()[-n:][::-1])]

# `a` is a 3x4 array with column sums getting
#     larger from left to right.
a = np.arange(12).reshape(3,4)

# `b` is `a` rotated 2 turns.
b = np.rot90(a, 2)

print(nlargest_cols(a, 2))
# [[ 2  3]
#  [ 6  7]
#  [10 11]]

print(nlargest_cols(b, 3))
# [[11 10  9]
#  [ 7  6  5]
#  [ 3  2  1]]