简体   繁体   中英

Numpy: equivalent of numpy.roll but only for data visualisation

Is there a way to perform a roll on an array, but instead of having a copy of the data having just a different visualisation of it?

An example might clarify: given b a rolled version of a ...

>>> 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]])

...if I perform an assignment on array b ...

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

...the content of a won't change...

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

...contrarily, I would like to have:

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

Thanks in advance for your time and expertise!

This is not possible, sorry. The rolled array cannot be described by a different set of strides , which would be necessary for a NumPy view to work.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM