【问题标题】:Formatting numpy arrays格式化numpy数组
【发布时间】:2019-03-17 04:08:28
【问题描述】:

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

目前,我已将 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。知道我该怎么做或可能有助于格式化的包吗?有什么帮助,谢谢!

【问题讨论】:

  • 你的意思是,用适当的间距做一个print(' B1 B2 B3 B4 ...')
  • 这是一个 hack,但是如果你只是在 player1 数组中添加了“A1”、“A2”等,而在 player2 数组中添加了“B1”、“B2”等呢?这不会给你漂亮的表格边框,但它会给你正确的间距。您可以使用table-printing package 很好地格式化您的数据。
  • @hpaulj 是的,我可以打印 B1,B2,... 但是行和列会根据用户输入而变化,所以我如何根据 A 和 B 的用户输入将其设置为填充并有适当的间距?
  • Python 格式,无论是旧的 % 样式还是新的 .format 都有用于以特定间距显示字符串和数字的工具。 np.savetxt,是csv 作家,使用% 风格。是的,使用它可能有点乏味。 pandas 可能有一些更高级的布局工具,但我没用过。

标签: python arrays numpy format transpose


【解决方案1】:

如何使用基本 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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-12-02
    • 2021-05-12
    • 1970-01-01
    • 1970-01-01
    • 2021-06-08
    • 2021-12-22
    • 2020-08-07
    • 2021-06-16
    相关资源
    最近更新 更多