【发布时间】:2017-03-09 01:02:59
【问题描述】:
我有一个名为“子集”的二维 numpy 数组:
array([[ 0.00000000e+00, 2.46951219e-03, 4.93902439e-03],
[ inf, 4.04938272e+02, 2.02469136e+02],
[ 1.77635684e-14, 4.49872050e+01, 1.05094837e+01],
[ 4.33257766e-16, 1.09724890e+00, 2.56328871e-01],
[ 4.85082380e-32, 3.11123702e-01, 1.69792239e-02]])
我正在尝试按 降序 顺序按数组 2(第 3 个数组)排序。以下适用于升序顺序:
>>> subset[:,subset[2,:].argsort()]
array([[ 0.00000000e+00, 4.93902439e-03, 2.46951219e-03],
[ inf, 2.02469136e+02, 4.04938272e+02],
[ 1.77635684e-14, 1.05094837e+01, 4.49872050e+01],
[ 4.33257766e-16, 2.56328871e-01, 1.09724890e+00],
[ 4.85082380e-32, 1.69792239e-02, 3.11123702e-01]])
如您所见,第三个数组按升序排序,其他行以相同方式排序,保留预期的列。
但是当我尝试通过对负数组执行相同的操作来反转这种排序时(认为它应该产生先前结果的镜像),它并没有按预期工作。
>>> subset[:,-subset[2,:].argsort()]
array([[ 0.00000000e+00, 2.46951219e-03, 4.93902439e-03],
[ inf, 4.04938272e+02, 2.02469136e+02],
[ 1.77635684e-14, 4.49872050e+01, 1.05094837e+01],
[ 4.33257766e-16, 1.09724890e+00, 2.56328871e-01],
[ 4.85082380e-32, 3.11123702e-01, 1.69792239e-02]])
为什么这不起作用?
【问题讨论】:
-
运算符优先级?
-
-subset[2,:].argsort()表示-(subset[2,:].argsort())不是(-subset[2,:]).argsort()
标签: arrays sorting numpy reverse