2017-04-21 38 views
0

我正在嘗試打印垂直切片的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

回答

1

您需要添加一個新軸:

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

1

我包裹在括號

a[:, [1]] 

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

另一種方式的第二索引增加一個維度:

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

只是一個選擇,我有時使用atleast_2d

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

(也有atleast_1datleast_3d選項太)