Python 新元';t打印完整(非汇总数组)

Python 新元';t打印完整(非汇总数组),python,arrays,numpy,Python,Arrays,Numpy,我已经尝试让numpy打印完整的数组,而不是摘要视图,但它似乎不起作用 我有一个带有命名标题的CSV。这是前五排 v0 v1 v2 v3 v4 1001 5529 24 56663 16445 1002 4809 30.125 49853 28069 1003 407 20 28462 8491 1005 605 19.55 75423 4798 1007 1607 20.26 79076 12962 我

我已经尝试让numpy打印完整的数组,而不是摘要视图,但它似乎不起作用

我有一个带有命名标题的CSV。这是前五排

v0  v1  v2  v3  v4
1001    5529    24  56663   16445
1002    4809    30.125  49853   28069
1003    407 20  28462   8491
1005    605 19.55   75423   4798
1007    1607    20.26   79076   12962
我想读入数据并能完整地查看它。我试着这样做:

import numpy as np
np.set_printoptions(threshold=np.inf)

main_df2=np.genfromtxt('file location', delimiter=",")
main_df2[0:3,:]

但是,这仍然返回被截断的数组,并且性能似乎大大降低。我做错了什么?

我很惊讶您竟然得到了一个数组,因为您的示例没有使用“,”作为分隔符。但可能您忘记在示例文件中包含逗号

如果我使用csv数据,我会使用熊猫的DataFrame功能。它在引擎盖下使用
numpy
,因此所有
numpy
操作都在数据帧上进行

Pandas有许多处理类似表格数据的技巧

import pandas as pd

df = pd.read_csv('nothing.txt')
#==============================================================================
# next line remove blanks from the column names
#==============================================================================
df.columns = [name.strip(' ') for name in df.columns]

pd.set_option('display.height', 1000)
pd.set_option('display.max_rows', 500)
pd.set_option('display.max_columns', 500)
pd.set_option('display.width', 1000)

print(df)

我很惊讶您竟然得到了一个数组,因为您的示例没有使用“,”作为分隔符。但可能您忘记在示例文件中包含逗号

如果我使用csv数据,我会使用熊猫的DataFrame功能。它在引擎盖下使用
numpy
,因此所有
numpy
操作都在数据帧上进行

Pandas有许多处理类似表格数据的技巧

import pandas as pd

df = pd.read_csv('nothing.txt')
#==============================================================================
# next line remove blanks from the column names
#==============================================================================
df.columns = [name.strip(' ') for name in df.columns]

pd.set_option('display.height', 1000)
pd.set_option('display.max_rows', 500)
pd.set_option('display.max_columns', 500)
pd.set_option('display.width', 1000)

print(df)

当我复制并粘贴数据时,它是在Excel中打开的,但文件是CSV

我在做一个课堂练习,我们必须使用numpy。我注意到的一件事是,由于采用了科学的记数法,结果非常难以辨认,因此我做了以下工作,事情变得更加顺利:

np.set\u打印选项(阈值=100000,抑制=True)


suppress语句为我节省了很多格式。当我将
阈值
更改为类似
'nan'
inf
的值时,性能确实会受到很大影响,我不确定原因。

当我复制并粘贴数据时,它在Excel中打开,但文件是CSV

我在做一个课堂练习,我们必须使用numpy。我注意到的一件事是,由于采用了科学的记数法,结果非常难以辨认,因此我做了以下工作,事情变得更加顺利:

np.set\u打印选项(阈值=100000,抑制=True)


suppress语句为我节省了很多格式。当我将
阈值
更改为类似
'nan'
inf
的值时,性能确实会受到很大影响,我不确定原因。

好的,在常规Python会话中(我通常使用Ipython),我设置了打印选项,并制作了一个大数组:

>>> np.set_printoptions(threshold=np.inf, suppress=True)
>>> x=np.random.rand(25000,5)
当我执行下一行时,它会花大约21秒格式化数组,然后将结果字符串写入屏幕(行数超过终端窗口缓冲区的行数)

这和

>>> print(repr(x))
x
的内部存储是一个浮点缓冲区(您可以通过
x.tostring()
看到)。要打印
x
它必须格式化,请创建一个多行字符串,其中包含每个数字的打印表示形式,所有125000个。打印的结果是
repr(x)
是一个1850000字符长的字符串,25000行。这需要21秒。在屏幕上显示该字符串只受终端滚动速度的限制

我还没有看细节,但我认为numpy格式主要是用Python编写的,而不是编译的。它的设计更灵活,而不是速度。希望看到10-100行数组是正常的。25000行是不寻常的情况

有点奇怪,将此数组作为csv写入速度很快,延迟很小:

>>> np.savetxt('test.txt', x, fmt='%10f', delimiter=',')
我知道
savetxt
做什么-它在行上迭代,并编写文件

f.write(fmt % tuple(row))
显然,常规的
repr
中所有的bell-n-whistles都是昂贵的。它可以进行总结,可以处理许多维度,可以处理复杂的数据类型,等等。简单地用已知的固定格式格式化每一行并不费时


实际上,
savetxt
路由可能更有用,也更快捷。您可以控制显示格式,并可以在编辑器或终端窗口中随意查看生成的文本文件。您不会受到终端窗口滚动缓冲区的限制。但是,此
savetxt
文件与原始文件有何不同inal
csv

好的,在常规Python会话中(我通常使用Ipython),我设置了打印选项,并制作了一个大数组:

>>> np.set_printoptions(threshold=np.inf, suppress=True)
>>> x=np.random.rand(25000,5)
当我执行下一行时,它会花大约21秒格式化数组,然后将结果字符串写入屏幕(行数超过终端窗口缓冲区的行数)

这和

>>> print(repr(x))
x
的内部存储是一个浮点缓冲区(您可以通过
x.tostring()
看到)。要打印
x
它必须格式化,请创建一个多行字符串,其中包含每个数字的打印表示形式,所有125000个。打印的结果是
repr(x)
是一个1850000字符长的字符串,25000行。这需要21秒。在屏幕上显示该字符串只受终端滚动速度的限制

我还没有看细节,但我认为numpy格式主要是用Python编写的,而不是编译的。它的设计更灵活,而不是速度。希望看到10-100行数组是正常的。25000行是不寻常的情况

有点奇怪,将此数组作为csv写入速度很快,延迟很小:

>>> np.savetxt('test.txt', x, fmt='%10f', delimiter=',')
我知道
savetxt
做什么-它在行上迭代,并编写文件

f.write(fmt % tuple(row))
显然,常规的
repr
中所有的bell-n-whistles都是昂贵的。它可以进行总结,可以处理许多维度,可以处理复杂的数据类型,等等。简单地用已知的固定格式格式化每一行并不费时

实际上,
savetxt
route可能更有用,也更快速。您可以控制显示格式,并可以查看结果t