首页 > 解决方案 > 格式化numpy数组

问题描述

我正在尝试将两个 2D numpy 数组格式化为与此类似的格式: 表格格式

目前,我已将 2 个数组转置为坐标:

##Transposes both arrays into coordinates
gameSet = np.array((player1,player2)).T

然后我遍历数组以获得类似的形式:

##iterates through 2D numpy array
for player1 in range(0, row-1):
    print(" ")
    for player2 in range(0, col-1):
        print (gameSet[player1,player2], end = "")

使用上面的代码,我得到了类似的格式,但我希望它在轴上具有 A1...An 和 B1....Bn。知道我该怎么做或可能有助于格式化的包吗?有什么帮助,谢谢!

标签: pythonarraysnumpyformattranspose

解决方案


如何使用基本 Python 格式的插图

数组:

In [188]: arr = np.arange(12).reshape(3,4)                                                

生成标签:

In [189]: rlbl = ['A{}'.format(i) for i in range(arr.shape[0])]                           
In [190]: clbl = ['B{}'.format(i) for i in range(arr.shape[1])]                           

格式化字符串:

顶行:

In [192]: tfmt = ' ~   ||'+'|'.join(['%10s']*arr.shape[1])                                
In [193]: tfmt%tuple(clbl)                                                                
Out[193]: ' ~   ||        B0|        B1|        B2|        B3'

数据行:

In [194]: rfmt = '%5s||'+'|'.join(['%10d']*arr.shape[1])                                  
In [195]: rfmt%(rlbl[0], *tuple(arr[i,:]))                                                
Out[195]: '   A0||         4|         5|         6|         7'

收集行:

In [201]: astr = [_193]                                                                   
In [202]: for i in range(arr.shape[0]): 
     ...:     astr.append(rfmt%(rlbl[i], *tuple(arr[i,:]))) 
     ...:

并打印:

In [203]: print('\n'.join(astr))                                                          
 ~   ||        B0|        B1|        B2|        B3
   A0||         0|         1|         2|         3
   A1||         4|         5|         6|         7
   A2||         8|         9|        10|        11

推荐阅读