Replacing sub array in Numpy array - Printable Version +- Python Forum (https://python-forum.io) +-- Forum: Python Coding (https://python-forum.io/forum-7.html) +--- Forum: Data Science (https://python-forum.io/forum-44.html) +--- Thread: Replacing sub array in Numpy array (/thread-25069.html) |
Replacing sub array in Numpy array - ThemePark - Mar-18-2020 I'm trying to replace a sub array in a Numpy array, with an array of the same shape, such that any changes are mirrored in both arrays. I've run the following code in IDLE. >>> import numpy >>> a=numpy.zeros((2,1)) >>> a array([[0.], [0.]]) >>> b=numpy.zeros((1)) >>> b array([0.]) >>> a[0]=b >>> b[0]=1 >>> b array([1.]) >>>Now what I'd want the output of a to be in this example is: array([[1.], [0.]])but instead I get: [b]array([[0.], [0.]])[/b]I've been trying to read up on slicing and indexing, but it's not immediately obvious to me what I'm doing wrong here, or if it's even possible to get the result I want. So I was hoping someone could tell me how, if at all, I can do this. RE: Replacing sub array in Numpy array - scidam - Mar-18-2020 You cann't do this with default dtype (np.float64). However, numpy arrays are mutable, so, if you define a-array with dtype= np.object ,everything should work fine. Try the following example: a = np.array([1,3,4], dtype=np.object) b = np.array([0]) a[0] = b print(a) b[0] = 99 print(a) RE: Replacing sub array in Numpy array - ThemePark - Mar-29-2020 (Mar-18-2020, 10:06 AM)scidam Wrote: You cann't do this with default dtype (np.float64). However, numpy arrays are mutable, But my example code uses multidimensional arrays. If I try that with your code, it doesn't work anymore. RE: Replacing sub array in Numpy array - ThemePark - Mar-30-2020 And nevermind my previous post. It took me a while but I finally figured out how it works and actually got some similar code to run. Now it's on to multidimensional arrays. RE: Replacing sub array in Numpy array - scidam - Apr-01-2020 (Mar-30-2020, 07:24 PM)ThemePark Wrote: Now it's on to multidimensional arrays.The same rules are true for multidimensional cases. import numpy as np x=np.ones((2,2,2), dtype=np.float32) z = np.zeros((2,2,2), dtype=np.object) z[0][0][0] = x x[0][0][0] = 99 print(z) RE: Replacing sub array in Numpy array - ThemePark - Apr-01-2020 (Apr-01-2020, 01:52 AM)scidam Wrote:(Mar-30-2020, 07:24 PM)ThemePark Wrote: Now it's on to multidimensional arrays.The same rules are true for multidimensional cases. Okay, truthfully I didn't realize you'd go that way. But what I mean by multidimensional arrays is that z[0][0][0] would not contain x, but x[0][0][0] and then the 99 would be shown in both arrays. You can look at my other post too, it's the same problem I'm trying to solve. |