简体   繁体   English

Python:如何将列表或数组分配给数组元素?

[英]Python:How to assign a list or an array to an array element?

My code requires me to replace elements of an array of dimension 3x3 with a list or array of a certain dimension. 我的代码要求我用某个维度的列表或数组替换维度为3x3的数组的元素。 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 . 在上面的代码中,我想操作theta_g In fact, I want to assign an array to each element of theta_g. 实际上,我想为theta_g的每个元素分配一个数组。 How can I accomplish that? 我该怎么做? Desired Output: theta_g which is a matrix of dimension equal to that of c_g . 所需的输出: theta_g ,它是尺寸等于c_g的尺寸的矩阵。

You can use np.stack . 您可以使用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: 我认为您应该只将数组元素的类型指定为np.ndarraylist ,如下所示:

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: 因为您没有真正解释分配的逻辑,所以让我在我自己的示例中进行演示,在该示例中,我将一些数组分配给2x2数组:

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])]] [[array([0,0])array([1,2])] [[array([1,2])array([10,20])]]

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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