Python 在numpy中打印子数组与Matlab一样

Python 在numpy中打印子数组与Matlab一样,python,matlab,numpy,Python,Matlab,Numpy,如何像Matlab那样以numpy打印子数组?我有一个3乘10000的数组,我想查看前20列。在Matlab中可以编写 a=zeros(3,10000); a(:,1:20) Columns 1 through 15 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

如何像Matlab那样以numpy打印子数组?我有一个3乘10000的数组,我想查看前20列。在Matlab中可以编写

a=zeros(3,10000);
a(:,1:20)
  Columns 1 through 15

 0     0     0     0     0     0     0     0     0     0     0     0     0     0     0
 0     0     0     0     0     0     0     0     0     0     0     0     0     0     0
 0     0     0     0     0     0     0     0     0     0     0     0     0     0     0

  Columns 16 through 20

 0     0     0     0     0
 0     0     0     0     0
 0     0     0     0     0
然而在努比

import numpy as np
set_printoptions(threshold=nan)
a=np.zeros((3,10000))
print a[:,0:20]
[[  0.   0.   0.   0.   0.   0.   0.   0.   0.   0.   0.   0.   0.   0.
    0.   0.   0.   0.   0.   0.   0.   0.   0.   0.   0.   0.   0.   0.
    0.   0.   0.   0.   0.   0.   0.   0.   0.   0.   0.   0.   0.   0.
    0.   0.   0.   0.   0.   0.   0.   0.]
 [  0.   0.   0.   0.   0.   0.   0.   0.   0.   0.   0.   0.   0.   0.
    0.   0.   0.   0.   0.   0.   0.   0.   0.   0.   0.   0.   0.   0.
    0.   0.   0.   0.   0.   0.   0.   0.   0.   0.   0.   0.   0.   0.
    0.   0.   0.   0.   0.   0.   0.   0.]
 [  0.   0.   0.   0.   0.   0.   0.   0.   0.   0.   0.   0.   0.   0.
    0.   0.   0.   0.   0.   0.   0.   0.   0.   0.   0.   0.   0.   0.
    0.   0.   0.   0.   0.   0.   0.   0.   0.   0.   0.   0.   0.   0.
    0.   0.   0.   0.   0.   0.   0.   0.]]
如您所见,numpy打印第一行、第二行、第三行。我希望它保持列结构,而不是行结构

多谢各位

PS:一个解决方案是例如

print a[:,0:20].T
[[  0.   0.   0.]
 [  0.   0.   0.]
 [  0.   0.   0.]
 [  0.   0.   0.]
 [  0.   0.   0.]
 [  0.   0.   0.]
 [  0.   0.   0.]
 [  0.   0.   0.]
 [  0.   0.   0.]
 [  0.   0.   0.]
 [  0.   0.   0.]
 [  0.   0.   0.]
 [  0.   0.   0.]
 [  0.   0.   0.]
 [  0.   0.   0.]
 [  0.   0.   0.]
 [  0.   0.   0.]
 [  0.   0.   0.]
 [  0.   0.   0.]
 [  0.   0.   0.]]

但是,它会在屏幕上消耗比预期多得多的空间。如果numpy有这个选项那就太好了

这能满足你的需求吗

>>> for item in a[:,0:20].T:
    print '\t'.join(map(str,item.tolist()))
还是这个

>>> for item in a[:,0:20]:
    print '\t'.join(map(str,item.tolist()))

非常感谢你花时间回答这个问题,但是。。。这是一种工作方式,我正在寻找一种方法来指定我希望numpy如何打印二维数组。如果您的数组有几行但有很多列,并且您不介意看到它打印得有点扭曲,您可以使用
print a.t
打印数组的横截面。另外,您似乎必须导入numpy两次,使用numpy import*中的
一次
set\u printpoptions
nan
都来自numpy名称空间。您是否有可能在IPython中使用pylab模式?还有两种(janky)解决方案:您可以使用
set\u printoptions
中的
linewidth
选项来增加每行的水平空间(例如
np.set\u printoptions(linewidth=200)
),或者您可以尝试将CT Zhu的答案与
set_string_函数
相结合,以返回您想要的数组。我使用的是iPython笔记本,我使用的是numpy import的东西,但在这里我尝试将代码最小化,但忘记了。:)linewidth选项工作正常,我希望接受该解决方案,但问题是,由于我使用的是iPython笔记本,笔记本会限制块的宽度和输出。因此,尽管我对提供的解决方案感到满意,但将来如果我想显示阵列的长视图,我希望有一种简单的方法让numpy自动断开连接线