Home > other >  How to align subsequent rows of numpy array with the first row
How to align subsequent rows of numpy array with the first row

Time:06-01

I indent the print result of numpy array with following codes.

import numpy as np
a = np.array([[1,2,3],[4,5,6],[7,8,9]])
print("a[[0,1,2]]:\n","\t",a[[0,1,2]])

But only the first row is indented, as shown in the following results :

a[[0,1,2]]:
         [[1 2 3]
 [4 5 6]
 [7 8 9]]

And I want the output to appear as follows :

a[[0,1,2]]:
          [[1 2 3]
           [4 5 6]
           [7 8 9]]

I could use the following code to realize the effect :

print("a[[0,1,2]]:")
count = 0
indentation = "\t "
for raw in a[[0,1,2]]:
    count  = 1
    if count == 1:
        print(indentation,"[", end = "")
        print(raw)
    elif count <= len(a[[0,1,2]])-1:
        print(indentation,"",raw)
    elif count == len(a[[0,1,2]]):
        print(indentation,"",raw, end="")
        print("]")

But I don't think it is a convenient way to display the outcome. Is there any way to directly move the whole array to the right in the output window?

CodePudding user response:

Here is a simpler, generic, padding function:

def pad(a, sep='\t'):
    from itertools import repeat
    t = repeat(sep)
    return '\n'.join(map(''.join, zip(t, str(a).split('\n'))))

print("a[[0,1,2]]:\n", pad(a[[0,1,2]]))

output:

a[[0,1,2]]:
    [[1 2 3]
     [4 5 6]
     [7 8 9]]
  • Related