【问题标题】:How to print numpy array in columns without using pandas?如何在不使用熊猫的情况下在列中打印 numpy 数组?
【发布时间】:2021-08-21 00:55:01
【问题描述】:

这是我的基本代码:

import numpy as np
a = numpy.asarray([ [1,2,3], [4,5,6], [7,8,9] ])

我想按如下方式打印数组:

1 4 7
2 5 8
3 6 9

另外,如果我的数组中有 1000 个嵌入列表,我将如何处理相同的概念?

【问题讨论】:

  • 你试过写一两个循环吗?
  • @mkrieger1 试图思考如何做两个循环。有什么提示吗?
  • 对于每一列:打印用换行符分隔的每一列;对于每一列中的每一行:打印以空格分隔的每个值

标签: python-3.x numpy numpy-ndarray


【解决方案1】:

这是一个强大的无循环单行解决方案:

print('\n'.join(map(lambda line: ' '.join(map(str, line)), a.T)))

a.T 转置二维数组,第一个 map 编码字符串中的一行,第二个连接字符串行(通过使用 \n 之间)。

这是带有生成器的替代版本(可能更慢):

print('\n'.join(' '.join(str(item) for item in line) for line in a.T))

另一种带有一个循环的解决方案(可能更慢):

for line in a.T:
    print(' '.join(str(item) for item in line))

注意最后一个版本产生一个尾随的新行。

【讨论】:

  • Richard 能否请您演示一下如何在循环中执行此操作?
  • @user8607309 我编辑了问题以包含它。
【解决方案2】:

你也可以使用str:

print(str(a.T).translate(str.maketrans({'[':'',']':''})))
1 4 7
 2 5 8
 3 6 9

print(str(a.T).replace('[', '').replace(']',''))
1 4 7
 2 5 8
 3 6 9
print(str(a.T).translate(str.maketrans({'[':'',']':''})).replace('\n ', '\n'))
 1 4 7
 2 5 8
 3 6 9

【讨论】:

    猜你喜欢
    • 2019-10-06
    • 2019-08-23
    • 1970-01-01
    • 2021-12-12
    • 1970-01-01
    相关资源
    最近更新 更多