我有一个3d,3x3x3的整数数组。 Numpy将打印这些作为第一个3x3的块,然后在第二个3x3下面,然后在第三个3x3下面打印。你可以改变numpy打印阵列的方式吗?
如果我想打印这3个3x3块彼此,而不是彼此下面,我会如何告诉numpy打印不同?
我有一个3d,3x3x3的整数数组。 Numpy将打印这些作为第一个3x3的块,然后在第二个3x3下面,然后在第三个3x3下面打印。你可以改变numpy打印阵列的方式吗?
如果我想打印这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
,只是改变了__str__
功能(获取的对象的字符串表示时被调用)将其转换成规则阵列,并打印。
解释你在做什么不会有什么伤害......教一个男人去钓鱼和所有这些。 – zdav 2010-11-02 18:05:29
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功能。 – kennytm 2010-11-02 17:59:54