Python Forum
Replacing sub array in Numpy array
Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Replacing sub array in Numpy array
#1
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.
Reply
#2
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)
Reply
#3
(Mar-18-2020, 10:06 AM)scidam Wrote: 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)

But my example code uses multidimensional arrays. If I try that with your code, it doesn't work anymore.
Reply
#4
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.
Reply
#5
(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)
Reply
#6
(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.
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)

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.
Reply


Possibly Related Threads…
Thread Author Replies Views Last Post
  [Numpy] How to store different data type in one numpy array? water 7 292 Mar-26-2024, 02:18 PM
Last Post: snippsat
  boolean array: looking for all rows where all is True paul18fr 4 1,175 Jan-04-2023, 09:58 PM
Last Post: paul18fr
  reshaping 2D numpy array paul18fr 3 970 Jan-03-2023, 06:45 PM
Last Post: paul18fr
  Turn list of arrays into an array of lists Cola_Reb 6 1,661 Jul-20-2022, 06:55 PM
Last Post: Cola_Reb
  Numpy returns "TypeError: unsupported operand type(s) for *: 'numpy.ufunc' and 'int'" kalle 2 2,528 Jul-19-2022, 06:31 AM
Last Post: paul18fr
Question how to write a function that accepts a 1D array as a parameter in Python SuperNinja3I3 1 1,552 Jul-02-2022, 01:55 PM
Last Post: Larz60+
  replace sets of values in an array without using loops paul18fr 7 1,629 Jun-20-2022, 08:15 PM
Last Post: paul18fr
  how to parse this array with pandas? netanelst 1 1,299 May-17-2022, 12:42 PM
Last Post: netanelst
  semantics of comma inside array brackets usercat123 2 1,324 Apr-23-2022, 09:08 AM
Last Post: usercat123
  RandomForest --ValueError: setting an array element with a sequence JaneTan 0 1,707 Sep-08-2021, 02:12 AM
Last Post: JaneTan

Forum Jump:

User Panel Messages

Announcements
Announcement #1 8/1/2020
Announcement #2 8/2/2020
Announcement #3 8/6/2020