2011-11-08 7 views
7

Dizide bir rulo gerçekleştirmenin bir yolu var mı, yoksa yalnızca farklı bir görselleştirmesi olan verilerin bir kopyasına sahip olmak yerine?Numpy: numpy.roll eşdeğeri ancak yalnızca veri görselleştirme için

örneği netleştirmek olabilir: Ben dizide b üzerinde atama gerçekleştirirseniz ...

>>> b[2,2] = 99 
>>> b 
array([[ 1, 3, 4], 
     [ 6, 7, 4], 
     [ 5, 4, 99]]) 

... a bir haddelenmiş versiyonu ...

>>> a = np.random.randint(0, 10, (3, 3)) 
>>> a 
array([[6, 7, 4], 
     [5, 4, 8], 
     [1, 3, 4]]) 
>>> b = np.roll(a, 1, axis=0) 
>>> b 
array([[1, 3, 4], 
     [6, 7, 4], 
     [5, 4, 8]]) 

b verilen .. a içeriği değiştirilmeyecektir ...

... aksine, ben istiyorum: Zaman ve uzmanlık için şimdiden

>>> a 
array([[6, 7, 4], 
     [5, 4, 99], # observe as `8` has been changed here too! 
     [1, 3, 4]]) 

Teşekkür!

cevap

9

Bu mümkün değil, üzgünüm. Haddelenmiş dizi, NumPy görünümünün çalışması için gerekli olan farklı bir strides kümesi tarafından tanımlanamaz.