def print_hinton(arr, max_arr=None):
''' Print bar string, fast way to visual magnitude of value in terminal
Example:
-------
>>> W = np.random.rand(10,10)
>>> print_hinton(W)
>>> ?????? ???
>>> ????? ??
>>> ??????????
>>> ??????????
>>> ? ? ?????
>>> ??????? ??
>>> ??? ?????
>>> ???? ? ???
>>> ??????????
>>> ??? ??? ??
Returns
-------
return : str
plot of array, for example: ????
'''
arr = np.asarray(arr)
if len(arr.shape) == 1:
arr = arr[None, :]
def visual_func(val, max_val):
if abs(val) == max_val:
step = len(_chars) - 1
else:
step = int(abs(float(val) / max_val) * len(_chars))
colourstart = ""
colourend = ""
if val < 0:
colourstart, colourend = '\033[90m', '\033[0m'
return colourstart + _chars[step] + colourend
if max_arr is None:
max_arr = arr
max_val = max(abs(np.max(max_arr)), abs(np.min(max_arr)))
# print(np.array2string(arr,
# formatter={'float_kind': lambda x: visual(x, max_val)},
# max_line_width=5000)
# )
f = np.vectorize(visual_func)
result = f(arr, max_val) # array of ????
rval = ''
for r in result:
rval += ''.join(r) + '\n'
return rval[:-1]
评论列表
文章目录