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

时间:2018-02-07 07:04:58

标签: python arrays list multidimensional-array

我的代码要求我将维度3x3的数组元素替换为某个维度的列表或数组。我怎样才能做到这一点?当我编写代码时,它会抛出一个错误,说明:

ValueError: setting an array element with a sequence.

我的代码:

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

在上面的代码中,我想操纵theta_g。实际上,我想为the__g的每个元素分配一个数组。我怎么能做到这一点? 期望输出:theta_g这是一个维度等于c_g的矩阵。

2 个答案:

答案 0 :(得分:0)

您可以使用np.stack

  >>> a = [np.array([1, 2]), np.array([3, 4])]
  >>> np.stack(a)
  array([[1, 2],
           [3, 4]])

答案 1 :(得分:0)

我认为您应该将数组元素的类型指定为np.ndarraylist,如下所示:

theta_g=np.zeros((c_g.shape[0],c_g.shape[1]), dtype=np.ndarray)

因为你没有真正解释赋值逻辑,让我在我自己的例子中演示,我将一些数组分配给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)

打印

  

[[array([0,0])array([1,2])] [array([1,2])array([10,20])]]