How to Print the Full Numpy Array, Without Truncation

How do I print the full NumPy array, without truncation?

Use numpy.set_printoptions:

import sys
import numpy
numpy.set_printoptions(threshold=sys.maxsize)

padding one numpy array to achieve the same number os columns of another numpy array

Maybe try something like this:

import tensorflow as tf

array1 = tf.random.normal((300, 15111))
array2 = tf.random.normal((50, 10465))

difference = tf.shape(array1)[-1] - tf.shape(array2)[-1]

# post padding
array2 = tf.concat([array2, tf.zeros((50, difference))], axis=-1)

final_array = tf.concat([array1, array2], axis=0)
final_array.shape
# TensorShape([350, 15111])

The logic is exactly the same with numpy:

import numpy as np

array1 = np.random.random((300, 15111))
array2 = np.random.random((50, 10465))

difference = array1.shape[-1] - array2.shape[-1]

array2 = np.concatenate([array2, np.zeros((50, difference))], axis=-1)

final_array = np.concatenate([array1, array2], axis=0)
final_array.shape

Or with tf.keras.preprocessing.sequence.pad_sequences:

import tensorflow as tf

array1 = tf.random.normal((300, 15111))
array2 = tf.random.normal((50, 10465))

array2 = tf.keras.preprocessing.sequence.pad_sequences(array2, maxlen=tf.shape(array1)[-1])
final_array = tf.concat([array1, array2], axis=0)
final_array.shape

Pretty-print a NumPy array without scientific notation and with given precision

Use numpy.set_printoptions to set the precision of the output:

import numpy as np
x = np.random.random(10)
print(x)
# [ 0.07837821 0.48002108 0.41274116 0.82993414 0.77610352 0.1023732
# 0.51303098 0.4617183 0.33487207 0.71162095]

np.set_printoptions(precision=3)
print(x)
# [ 0.078 0.48 0.413 0.83 0.776 0.102 0.513 0.462 0.335 0.712]

And suppress suppresses the use of scientific notation for small numbers:

y = np.array([1.5e-10, 1.5, 1500])
print(y)
# [ 1.500e-10 1.500e+00 1.500e+03]

np.set_printoptions(suppress=True)
print(y)
# [ 0. 1.5 1500. ]

To apply print options locally, using NumPy 1.15.0 or later, you could use the numpy.printoptions context manager.
For example, inside the with-suite precision=3 and suppress=True are set:

x = np.random.random(10)
with np.printoptions(precision=3, suppress=True):
print(x)
# [ 0.073 0.461 0.689 0.754 0.624 0.901 0.049 0.582 0.557 0.348]

But outside the with-suite the print options are back to default settings:

print(x)    
# [ 0.07334334 0.46132615 0.68935231 0.75379645 0.62424021 0.90115836
# 0.04879837 0.58207504 0.55694118 0.34768638]

If you are using an earlier version of NumPy, you can create the context manager
yourself. For example,

import numpy as np
import contextlib

@contextlib.contextmanager
def printoptions(*args, **kwargs):
original = np.get_printoptions()
np.set_printoptions(*args, **kwargs)
try:
yield
finally:
np.set_printoptions(**original)

x = np.random.random(10)
with printoptions(precision=3, suppress=True):
print(x)
# [ 0.073 0.461 0.689 0.754 0.624 0.901 0.049 0.582 0.557 0.348]

To prevent zeros from being stripped from the end of floats:

np.set_printoptions now has a formatter parameter which allows you to specify a format function for each type.

np.set_printoptions(formatter={'float': '{: 0.3f}'.format})
print(x)

which prints

[ 0.078  0.480  0.413  0.830  0.776  0.102  0.513  0.462  0.335  0.712]

instead of

[ 0.078  0.48   0.413  0.83   0.776  0.102  0.513  0.462  0.335  0.712]

How to print a Numpy array without brackets?

You can use the join method from string:

>>> a = [1,2,3,4,5]
>>> ' '.join(map(str, a))
"1 2 3 4 5"

How to flatten a numpy array based on frequency to get the correct standard deviation?

Use arr2[:, 0].repeat(arr2[:, 1]).



Related Topics



Leave a reply



Submit