【问题标题】:Inconsistent python print output不一致的python打印输出
【发布时间】:2018-03-08 23:24:27
【问题描述】:

(Python 2.7.12) - 我创建了一个 NxN 数组,当我打印它时,我得到了以下确切的输出:

样品一个

SampleArray=np.random.randint(1,100, size=(5,5))    
    [[49 72 88 56 41]
     [30 73  6 43 53]
     [83 54 65 16 34]
     [25 17 73 10 46]
     [75 77 82 12 91]]
  • 干净整洁。

但是,当我使用代码按第 4 列中的元素对该数组进行排序时:

SampleArray=sorted(SampleArray, key=lambda x: x[4])

我得到以下输出:

样品 b:

[array([90,  9, 77, 63, 48]), array([43, 97, 47, 74, 53]), array([60, 64, 97,  2, 73]), array([34, 20, 42, 80, 76]), array([86, 61, 95, 21, 82])]

如何让我的输出保持“样本 a”的格式。如果我能在直列中看到数字,调试会容易得多。

【问题讨论】:

  • 显示会发生变化,因为它是不同类型的对象。一个是数组,另一个是列表。在 Python 中,每种类型的对象都有自己的显示格式。

标签: python arrays sorting numpy multidimensional-array


【解决方案1】:

只需numpy.argsort() 例程:

import numpy as np

a = np.random.randint(1,100, size=(5,5))
print(a)   # initial array
print(a[np.argsort(a[:, -1])])  # sorted array

# initial array 的输出:

[[21 99 34 33 55]
 [14 81 92 44 97]
 [68 53 35 46 22]
 [64 33 52 40 75]
 [65 35 35 78 43]]

# sorted array 的输出:

[[68 53 35 46 22]
 [65 35 35 78 43]
 [21 99 34 33 55]
 [64 33 52 40 75]
 [14 81 92 44 97]]

【讨论】:

  • @Jean-FrançoisFabre,确实)
【解决方案2】:

这会有所帮助:

from pprint import pprint
pprint(SampleArray)

输出与示例 A 的输出略有不同,但看起来仍然很整洁,调试会更容易。

编辑:这是我的输出

[[92  8 41 64 61]
 [18 67 91 80 35]
 [68 37  4  6 43]
 [26 81 57 26 52]
 [ 6 82 95 15 69]]

[array([18, 67, 91, 80, 35]),
 array([68, 37,  4,  6, 43]),
 array([26, 81, 57, 26, 52]),
 array([92,  8, 41, 64, 61]),
 array([ 6, 82, 95, 15, 69])]

【讨论】:

    【解决方案3】:

    您只需使用

    将示例数组转换回 numpy 数组
    SampleArray = np.array(SampleArray)
    

    示例代码:-

    import numpy as np
    SampleArray=np.random.randint(1,100, size=(5,5))    
    
    print (SampleArray)
    SampleArray=sorted(SampleArray, key=lambda x: x[4])
    print (SampleArray)
    SampleArray = np.array(SampleArray)
    print (SampleArray)
    

    输出:-

    [[28 25 33 56 54]
     [77 88 10 68 61]
     [30 83 77 87 82]
     [83 93 70  1  2]
     [27 70 76 28 80]]
    [array([83, 93, 70,  1,  2]), array([28, 25, 33, 56, 54]), array([77, 88, 10, 68, 61]), array([27, 70, 76, 28, 80]), array([30, 83, 77, 87, 82])]
    [[83 93 70  1  2]
     [28 25 33 56 54]
     [77 88 10 68 61]
     [27 70 76 28 80]
     [30 83 77 87 82]]
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-12-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多