垂直打印垂直阵列的一维切片

问题描述:

我正在尝试打印垂直切片的numpy阵列,所以垂直显示,但总是水平打印。 鉴于这种方阵:垂直打印垂直阵列的一维切片

a = np.ones([5,5]) 

我已经试过:

print a[:,1] 
print np.reshape(a[:,1], (1,-1)) 
print a[:,1].T 
print [a[:,1].T] 

这给我:

[ 1. 1. 1. 1. 1.] 
[[ 1. 1. 1. 1. 1.]] 
[ 1. 1. 1. 1. 1.] 
[array([ 1., 1., 1., 1., 1.])] 

我想看看:

[[1], 
[1], 
[1], 
[1], 
[1]] 
+0

虽然'A'为2d,'一个[:,1]'是1D(已卸下的尺寸)。 1d的移调仍然是1d。您必须保留或添加一个维度。 – hpaulj

+0

@阿扬的回答很好,可以接受。考虑投票,以及:-) – piRSquared

您需要添加一个新轴:

a[:, 1, None] 
Out: 
array([[ 1.], 
     [ 1.], 
     [ 1.], 
     [ 1.], 
     [ 1.]]) 

a[:, 1, np.newaxis] 
Out: 
array([[ 1.], 
     [ 1.], 
     [ 1.], 
     [ 1.], 
     [ 1.]]) 
+1

很好的答案! – piRSquared

+0

有时,您希望在末尾添加一个轴而不指定维数(例如可以是3D或2D的图像数组),在这种情况下,您可以使用省略号a [...,None] – paddyg

我包裹在括号

a[:, [1]] 

array([[ 1.], 
     [ 1.], 
     [ 1.], 
     [ 1.], 
     [ 1.]]) 

另一种方式的第二索引增加一个维度:

a[:,1:2] 
Out: 
array([[ 1.], 
    [ 1.], 
    [ 1.], 
    [ 1.], 
    [ 1.]]) 

只是一个选择,我有时使用atleast_2d

np.atleast_2d(a[:, 1]).T 

(也有atleast_1datleast_3d选项太)