如何使Numpy数组的每一行与下面的行均匀对齐

wyyhbhjk  于 2023-08-05  发布在  其他
关注(0)|答案(1)|浏览(76)

所以我试着做一个数独程序,我一直很恼火,因为我的数据不整洁和有组织。我使用pythonnumpy数组并打印它们来获取数据
我的数据看起来像这样

[[6 5 3 189 7 2 4 89 189]
 [1789 1789 89 135689 3569 4 56789 2 136789]
 [1789 4 2 135689 3569 3569 56789 356789 136789]
 [2 369 7 3569 4 8 569 1 369]
 [13589 13689 4 3569 2 35679 56789 356789 36789]
 [3589 3689 5689 3569 1 35679 2 356789 4]
 [5789 6789 1 2 5689 569 3 4 6789]
 [35789 36789 5689 4 5689 1569 16789 6789 2]
 [4 2 689 7 3689 1369 1689 689 5]]

字符串
我希望它看起来更有间距,甚至与下面的值,以便我可以更容易地阅读它

bqf10yzr

bqf10yzr1#

如果我复制粘贴几行你的显示,并删除括号,我可以得到一些文本行:

txt="""6 5 3 189 7 2 4 89 189
 1789 1789 89 135689 3569 4 56789 2 136789
 1789 4 2 135689 3569 3569 56789 356789 136789"""

txt.splitlines()
Out[44]: 
['6 5 3 189 7 2 4 89 189',
 ' 1789 1789 89 135689 3569 4 56789 2 136789',
 ' 1789 4 2 135689 3569 3569 56789 356789 136789']

字符串
从那里我可以加载它(就像从csv文件):

data = np.loadtxt(txt.splitlines(), dtype=int)


该阵列的重复显示为:

data
Out[46]: 
array([[     6,      5,      3,    189,      7,      2,      4,     89,
           189],
       [  1789,   1789,     89, 135689,   3569,      4,  56789,      2,
        136789],
       [  1789,      4,      2, 135689,   3569,   3569,  56789, 356789,
        136789]])


打印显示与您的类似-除了列是对齐的。这是正常的numpy打印:

print(data)
[[     6      5      3    189      7      2      4     89    189]
 [  1789   1789     89 135689   3569      4  56789      2 136789]
 [  1789      4      2 135689   3569   3569  56789 356789 136789]]


我不知道你打印了什么。它没有排成一行,但它没有逗号。
列表显示不对齐,但有逗号:

In [48]: data.tolist()
Out[48]: 
[[6, 5, 3, 189, 7, 2, 4, 89, 189],
 [1789, 1789, 89, 135689, 3569, 4, 56789, 2, 136789],
 [1789, 4, 2, 135689, 3569, 3569, 56789, 356789, 136789]]


让我们将其转换为objec dtype:

print(data.astype(object))
[[6 5 3 189 7 2 4 89 189]
 [1789 1789 89 135689 3569 4 56789 2 136789]
 [1789 4 2 135689 3569 3569 56789 356789 136789]]


返回到int

print(data.astype(object).astype(int))
[[     6      5      3    189      7      2      4     89    189]
 [  1789   1789     89 135689   3569      4  56789      2 136789]
 [  1789      4      2 135689   3569   3569  56789 356789 136789]]


这就是你的问题,它是对象dtype,类似于列表。如果你想让它排队,你需要使它成为int(或float)。

相关问题