2016-04-13 50 views
0

olarak, bir matrisin onaltılık olarak gösterilen bir sütunu, ondalık olarak kalanını görüntülemek için kolay bir yol bulamıyorum. how to print everything as hex ile ilgili yanıt bulundu, ancak sadece bir sütun istiyorum.numpy - print * matristen yalnızca bir * sütun, hex

burada ben var ne: veri şuna benzer:

array([[120258560,   3], 
     [167772160,  339], 
     [118948100,   1], 
     [ 50331904,   1]]) 

İlk sütun, bir hata kodu ikinci olayının gerçekleştiği sayısıdır. onaltılı olarak okunması kolay hata kodu onaltılık olarak okunması kolay bir sayıdır. bunu yapmak mümkün istiyorum:

array([['0X72B0000',   3], 
     ['0xa000000',  339], 
     ['0X7170104',   1], 
     ['0X3000100',   1]]) 

ipuçları? (: Ekran amaçları sadece satırlarda yineleme için

array([['0x72b0000', '3'], 
     ['0xa000000', '339'], 
     ['0x7170104', '1'], 
     ['0x3000100', '1']], 
     dtype='|S9') 

cevap

1

: gibi

hex_col = hex_col = np.array(([hex(x)[:-1] for x in data[:,0]])) 
err_in_hex = np.transpose([hex_col, data[:,1]]) 

err_in_hex görünür:


benim şimdiki çözüm çalışır ama çirkin olan bu etrafında sarıcı olduğunu ve her satırı gerektiği gibi biçimlendirin:

In [303]: for row in data: 
    ...:  print hex(row[0])[:-1], row[1] 
    ...:  
0x72b0000 3 
0xa000000 339 
0x7170104 1 
0x3000100 1 

veya daha fazla biçimlendirme ile:

In [307]: print '\n'.join(['%10s %10d'%(hex(row[0])[:-1], row[1]) for row in data]) 
0x72b0000   3 
0xa000000  339 
0x7170104   1 
0x3000100   1 

Düzenli dizi biçimlendirme tolist() böyle bir şey yapar ve sonra o biçim kontrolleri uygular. Yani satır sırasına göre kendi satırınızı yaparak hiçbir şey kaybetmezsiniz.

Altıgen dize ve sayısal (dize değil) verileri tek bir dizide toplamak isterseniz, bileşik bir dtype, yapılandırılmış bir diziye ihtiyacınız vardır. Bunu şu şekilde yapabilirsiniz:

In [317]: hex_col = [hex(x)[:-1] for x in data[:,0]] 
In [318]: data1=np.zeros(data.shape[0],dtype='S10,int') 
In [319]: data1['f0']=hex_col 
In [320]: data1['f1']=data[:,1] 

In [321]: data1 
Out[321]: 
array([('0x72b0000', 3), ('0xa000000', 339), ('0x7170104', 1), 
     ('0x3000100', 1)], 
     dtype=[('f0', 'S10'), ('f1', '<i4')])