33

I want to print a numpy array without truncation. I have seen other solutions but those don't seem to work.

Here is the code snippet:

total_list = np.array(total_list)
np.set_printoptions(threshold=np.inf)
print(total_list)

And this is what the output looks like:

22        A
23        G
24        C
25        T
26        A
27        A
28        A
29        G
         ..
232272    G
232273    T
232274    G
232275    C
232276    T
232277    C
232278    G
232279    T

This is the entire code. I might be making a mistake in type casting.

import csv
import pandas as pd
import numpy as np



seqs = pd.read_csv('BAP_GBS_BTXv2_imp801.hmp.csv')
plts = pd.read_csv('BAP16_PlotPlan.csv')

required_rows = np.array([7,11,14,19,22,31,35,47,50,55,58,63,66,72,74,79,82,87,90,93,99])
total_list = []


for i in range(len(required_rows)):
    curr_row = required_rows[i];
    print(curr_row)
    for j in range(len(plts.RW)):
        if(curr_row == plts.RW[j]):
            curr_plt = plts.PI[j]
            curr_range = plts.RA1[j]
            curr_plt = curr_plt.replace("_", "").lower()
            if curr_plt in seqs.columns:
                new_item = [curr_row,curr_range,seqs[curr_plt]]
                total_list.append(new_item)
                print(seqs[curr_plt]) 


total_list = np.array(total_list)
'''
np.savetxt("foo.csv", total_list[:,2], delimiter=',',fmt='%s')
total_list[:,2].tofile('seqs.csv',sep=',',format='%s')
'''
np.set_printoptions(threshold='nan')

print(total_list)
Warren Weckesser
  • 110,654
  • 19
  • 194
  • 214
Harjatin
  • 1,313
  • 1
  • 12
  • 22
  • 1
    It works for me, maybe your total_list is not a numpy array? – Psidom Jun 01 '17 at 15:33
  • 1
    It is not how numpy arrays look. Are you sure it is not a pandas Series? – ayhan Jun 01 '17 at 15:34
  • are you trying to print to a file? – Aaron Jun 01 '17 at 15:41
  • That was the actual intent. But had the same problem. So I m trying to print it on the terminal first. – Harjatin Jun 01 '17 at 15:43
  • does this file need to be human readable? or is it for the purpose of storing the data? – Aaron Jun 01 '17 at 15:51
  • Numpy has built in functions to do either... [`np.savetxt`](https://docs.scipy.org/doc/numpy/reference/generated/numpy.savetxt.html) can be configured to write a standard csv file, and [`np.save`](https://docs.scipy.org/doc/numpy/reference/generated/numpy.save.html#numpy.save) can save to a numpy specific binary format. – Aaron Jun 01 '17 at 15:56
  • Please check the edit. I have tried that. It also saves the csv in truncated format. – Harjatin Jun 01 '17 at 15:58

5 Answers5

32

use the following snippet to get no ellipsis.

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

EDIT:

If you have a pandas.DataFrame use the following snippet to print your array:

def print_full(x):
    pd.set_option('display.max_rows', len(x))
    print(x)
    pd.reset_option('display.max_rows')

Or you can use the pandas.DataFrame.to_string() method to get the desired result.

EDIT':

An earlier version of this post suggested the option below

numpy.set_printoptions(threshold='nan')

Technically, this might work, however, the numpy documentation specifies int and None as allowed types. Reference: https://docs.scipy.org/doc/numpy/reference/generated/numpy.set_printoptions.html.

Nico Schlömer
  • 53,797
  • 27
  • 201
  • 249
Szabolcs Dombi
  • 5,493
  • 3
  • 39
  • 71
5

You can get around the weird Numpy repr/print behavior by changing it to a list:

print list(total_list)

should print out your list of 2-element np arrays.

a p
  • 3,098
  • 2
  • 24
  • 46
4

You are not printing numpy arrays.

Add the following line after the imports:

pd.set_option('display.max_rows', 100000)
Szabolcs Dombi
  • 5,493
  • 3
  • 39
  • 71
  • Thank you. This worked. I am little confused through, shouldn't `total_list = np.array(total_list)` covert DataFrame to numpy array ? – Harjatin Jun 01 '17 at 16:49
1
#for a 2d array
def print_full(x):
    dim = x.shape
    pd.set_option('display.max_rows', dim[0])#dim[0] = len(x)
    pd.set_option('display.max_columns', dim[1])
    print(x)
    pd.reset_option('display.max_rows')
    pd.reset_option('display.max_columns')
GrigoreG
  • 21
  • 3
1

It appears that as of Python 3, the threshold can no longer be unlimited.

Therefore, the recommended option is:

import numpy
import sys
numpy.set_printoptions(threshold=sys.maxsize)
simonalexander2005
  • 4,338
  • 4
  • 48
  • 92