2011-11-08 37 views
7

有沒有辦法在數組上執行滾動操作,而不是讓數據的副本具有不同的可視化效果?Numpy:相當於numpy.roll,但僅用於數據可視化

一個例子可能澄清:給予ba軋製版本...

>>> 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執行任務......

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

.. a的內容不會改變...

>>> a 
array([[6, 7, 4], 
     [5, 4, 8], 
     [1, 3, 4]]) 

...反之,我想有:提前

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

感謝您的時間和專業知識!

回答

9

這是不可能的,對不起。滾動的數組不能用一組不同的strides來描述,這對NumPy視圖的工作是必需的。