Numpy 总结了 large arrays
,在交互式会话中工作时很方便。不幸的是,结构化arrays
并且recarrays
默认情况下没有很好地总结。有没有办法改变这个?
默认情况下,array
如果有 1000 个或更少的项目,则会显示完整。当有比这更多的项目时,将array
被汇总。这可以用 设置np.set_printoptions(threshold=<number of items to trigger summarization>, edgeitems=<number of items to show in summary>)
。这适用于标准数据类型,例如:
np.set_printoptions(threshold=3, edgeitems=1)
print(np.zeros(3))
print(np.zeros(4))
结果是
[ 0. 0. 0.]
[ 0. ..., 0.]
然而,当使用更复杂的数据类型时,总结的帮助就更少了
print(np.zeros(4, dtype=[('test', 'i4', 3)]))
print(np.zeros(4, dtype=[('test', 'i4', 4)]))
[([0, 0, 0],) ..., ([0, 0, 0],)]
[([0, 0, 0, 0],) ..., ([0, 0, 0, 0],)]
数组已汇总,但子数据类型未汇总。这成为arrays
使用复杂数据类型的大问题。例如array
np.zeros(1000, dtype=[('a', float, 3000), ('b', float, 10000)])
挂断我的 ipython 实例。
有几种解决方法,而不是np.array
直接使用类型,可以继承并编写自定义__repr__
. 这适用于大型项目,但不能解决根本问题,也不便于在交互式 python 会话中快速探索数据。我还在我的编辑器中实现了一个自定义过滤器,它会截断很长的控制台输出。这有点小技巧,当我在其他地方启动 python 会话时没有帮助。
是否有我不知道的 numpy 设置,或者可以解决此问题的 python 或 ipython 设置?