My code requires me to replace elements of an array of dimension 3x3 with a list or array of a certain dimension. How can I achieve that? When I write my code, it throws an error stating that:
ValueError: setting an array element with a sequence.
My code:
import numpy as np
Y=np.array([1,2,3,4,5,6,7,1,2,3,4,5,6,7,1,2,4])
c_g=np.array([[[1,2],[2,3]],[[4,5],[1,6]]])
xx=[1,2,3]
var=2
theta_g=np.zeros((c_g.shape[0],c_g.shape[1]))
for i in range(c_g.shape[0]):
for j in range(c_g.shape[1]):
theta_g[i][j]=Y[var:var+len(c_g[i][j])**len(xx)]
#here Y is some one dimensional array or list which I want to //
#assign to each element of theta_g
var=var+len(c_g[i][j])**len(xx)
print theta_g
In the code above I want to manipulate theta_g
. In fact, I want to assign an array to each element of theta_g. How can I accomplish that? Desired Output: theta_g
which is a matrix of dimension equal to that of c_g
.
You can use np.stack
.
>>> a = [np.array([1, 2]), np.array([3, 4])]
>>> np.stack(a)
array([[1, 2],
[3, 4]])
I think you should just specify the type of the elements of the array as np.ndarray
or list
, like so:
theta_g=np.zeros((c_g.shape[0],c_g.shape[1]), dtype=np.ndarray)
Because you didn't really explain the logic of assignment, let me demonstrate in my own example, where I assign some arrays to a 2x2 array:
from itertools import product
Y = np.array([0,0,1,2,10,20])
Z = np.zeros((2,2), dtype=np.ndarray)
for i,j in product(range(0,2), repeat = 2):
Z[i,j] = Y[2*(i+j):2+2*(i+j)]
print(Z)
prints
[[array([0, 0]) array([1, 2])] [array([1, 2]) array([10, 20])]]
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.