Python 你能改变numpy打印阵列的方式吗?
我有一个3d,3x3x3的整数数组。Numpy将这些打印为第一个3x3块,然后在其下方打印第二个3x3块,然后在该块下方打印第三个3x3块 如果我想将这3个3x3块打印在一起,而不是打印在一起,我该如何告诉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的子类,只是更改了\
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函数。解释一下您正在做什么并没有什么坏处。。。教一个人钓鱼等等。