Python 你能改变numpy打印阵列的方式吗?

Python 你能改变numpy打印阵列的方式吗?,python,numpy,Python,Numpy,我有一个3d,3x3x3的整数数组。Numpy将这些打印为第一个3x3块,然后在其下方打印第二个3x3块,然后在该块下方打印第三个3x3块 如果我想将这3个3x3块打印在一起,而不是打印在一起,我该如何告诉numpy以不同的方式打印 class MyArray(numpy.array): def __str__(self): print [[[d for d in c] for c in b] for b in a] 这本质上是numpy.array的子类,只是更改了\

我有一个3d,3x3x3的整数数组。Numpy将这些打印为第一个3x3块,然后在其下方打印第二个3x3块,然后在该块下方打印第三个3x3块

如果我想将这3个3x3块打印在一起,而不是打印在一起,我该如何告诉numpy以不同的方式打印

class MyArray(numpy.array):
    def __str__(self):
        print [[[d for d in c] for c in b] for b in a]
这本质上是
numpy.array
的子类,只是更改了
\uuuu str\uuuu
函数(在获取对象的字符串表示形式时调用),该函数将对象转换为常规数组并打印该数组

import numpy as np   
arr=np.random.random((3,3,3))    
print(arr)
# [[[ 0.05733376  0.00646892  0.96180769]
#   [ 0.11560363  0.56058966  0.83942817]
#   [ 0.5520361   0.17355794  0.87699437]]

#  [[ 0.90999361  0.03036473  0.5064459 ]
#   [ 0.76169531  0.48234618  0.56884999]
#   [ 0.93220906  0.9460365   0.65307273]]

#  [[ 0.04400683  0.58783221  0.74281147]
#   [ 0.69999475  0.14870245  0.32175415]
#   [ 0.20044376  0.11985585  0.69949965]]]

for rows in zip(*arr):
    print('\t'.join(map(str,rows)))
# [ 0.05733376  0.00646892  0.96180769] [ 0.90999361  0.03036473  0.5064459 ]   [ 0.04400683  0.58783221  0.74281147]
# [ 0.11560363  0.56058966  0.83942817] [ 0.76169531  0.48234618  0.56884999]   [ 0.69999475  0.14870245  0.32175415]
# [ 0.5520361   0.17355794  0.87699437] [ 0.93220906  0.9460365   0.65307273]   [ 0.20044376  0.11985585  0.69949965]
为方便起见,您可以将其包装在函数中:

def format_arr(arr):
    result=[]
    for x in zip(*arr):
        result.append('\t'.join(map(str,x)))
    return '\n'.join(result)

print(format_arr(arr))

只需编写您自己的printNPArr/strNPArr函数。解释一下您正在做什么并没有什么坏处。。。教一个人钓鱼等等。