2017-09-27 53 views
3

(Python的2.7.12) - 我已经创建了一个N×N的阵列,当我打印我得到确切的输出如下:不一致的蟒纹输出

样品一个

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])] 

我怎样才能让我的输出保持'Sample a'的格式。如果我可以直接看到数字,它将使调试变得更加容易。

+0

显示屏因为是不同类型的对象而发生更改。一个是数组,另一个是列表。在Python中,每种类型的对象都有其自己的显示格式。 – hpaulj

回答

3

只需使用常规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]] 

输出FO r # 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]] 
+1

这个'numpy'模块是它自己的一种语言... –

+0

@ Jean-FrançoisFabre的确) – RomanPerekhrest

0

你只需要使用

SampleArray = np.array(SampleArray) 

示例代码样本数组转换回numpy的数组: -

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]] 
-1

这可以帮助:

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])]