2013-08-10 17 views
5
>>> print np.array([np.arange(10)]).transpose() 

[[0] 
[1] 
[2] 
[3] 
[4] 
[5] 
[6] 
[7] 
[8] 
[9]] 

Bu ekstra adımları atlamak zorunda kalmadan dikey bir ortam elde etmenin bir yolu var mı?Nümerik dikey bir garip nasıl yaratılır?

+0

Halihazırda gereksiz adımlar atıyorsunuz - np.array() 've' [] 'gereksiz çünkü np.arange' bir sayı dizisi döndürüyor. Yapabilecekleriniz np.arange (10) .transpose() ' – Brionius

+3

@Brionius, 1d dizisinden' transpose 'hiçbir şey yapmaz. OP, diziye ek bir boyut eklemek için [[] 'yi kullanır ve aynı sonucu elde etmek için daha verimli bir yol olup olmadığını sormaktadır. –

+0

@BiRico Ah, haklısın, benim hatam. – Brionius

cevap

14

Sen np.newaxis kullanabilirsiniz:

>>> np.arange(10)[:, np.newaxis] 
array([[0], 
     [1], 
     [2], 
     [3], 
     [4], 
     [5], 
     [6], 
     [7], 
     [8], 
     [9]]) 

np.newaxisNone için sadece bir takma olduğunu ve ağırlıklı olarak okunabilmesi için numpy geliştiriciler tarafından eklenmiştir. Bu nedenle, np.arange(10)[:, None], yukarıdaki çözüm ile aynı kesin sonucu üretecektir.

yapardım
+0

sadece eklemek için, 'np.newaxis' yerine' None'ı döndürmek aynı etkiye sahip ... –

+0

Neden bunun nedenini açıklayan bazı belgelere işaret edebilir misiniz? –

+0

@SaulloCastro, ben bunu bilmiyordum. – Akavall

10

: np.array aksine

np.arange(10).reshape((10, 1)) 

, yeniden şekillendirmek dizideki veriyi kopyalamaz bir hafif bir operasyondur.

+8

Bir yan notta, ilk boyutun boyutunu belirtmek zorunda kalmamak için' what whatres '(-1, 1)' de yapabilirsiniz. –

İlgili konular