Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/64.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在嵌套列表中操作numpy数组_Python_List_Numpy - Fatal编程技术网

Python 在嵌套列表中操作numpy数组

Python 在嵌套列表中操作numpy数组,python,list,numpy,Python,List,Numpy,我试图在嵌套列表中操作numpy数组 我有一个嵌套列表,在每个内部列表中,有几个numpy数组 a = [ [np.random.normal(0,1,[2,3]), np.random.normal(0,1,[4,5]), np.random.normal(0,1, [9, 10])], [np.random.normal(0,1,[2,3]), np.random.normal(0,1,[4,5]), np.random.normal(0,1, [9, 10])], [np.random.n

我试图在嵌套列表中操作numpy数组

我有一个嵌套列表,在每个内部列表中,有几个numpy数组

a = [
[np.random.normal(0,1,[2,3]), np.random.normal(0,1,[4,5]), np.random.normal(0,1, [9, 10])],
[np.random.normal(0,1,[2,3]), np.random.normal(0,1,[4,5]), np.random.normal(0,1, [9, 10])],
[np.random.normal(0,1,[2,3]), np.random.normal(0,1,[4,5]), np.random.normal(0,1, [9, 10])]
]
我想按元素计算每个列表中每个numpy数组的平均值,从而得到一个新的列表
b
,其中元素是三个
np.random.normal(0,1,[2,3])
,三个
np.random.normal(0,1,[4,5])
的平均值,等等


我最初的想法是写下一个for循环来获取相应的数组并计算它们的平均值,然后添加到一个列表中。但是,当有大量这样的数组或内部列表时,这可能会有点慢。

我不确定这是否是您想要的,但这里有一个潜在的解决方案:

b = [np.mean(row, axis=0) for row in zip(*a)]
zip(*a)
将嵌套列表重新排列为合理的格式,因此
是大小相等的数组的列表,
np.mean(行,轴=0)
将获得列表中的元素平均值

您还可以将每行转换为numpy数组:

b = [np.array(row).mean(axis=0) for row in zip(*a)]

我不确定这是否是您想要的,但这里有一个潜在的解决方案:

b = [np.mean(row, axis=0) for row in zip(*a)]
zip(*a)
将嵌套列表重新排列为合理的格式,因此
是大小相等的数组的列表,
np.mean(行,轴=0)
将获得列表中的元素平均值

您还可以将每行转换为numpy数组:

b = [np.array(row).mean(axis=0) for row in zip(*a)]

我不明白为什么你会有一个这样格式的列表。为什么不将一个列表转换为您所拥有的列表,即将相同大小的数组放在相同的子列表中?为什么要将Numpy数组放在一个2D列表中,而不是全部放在一个Numpy数组中,或者至少放在一个1D数组中?@PM2Ring数组的大小不同,这意味着它们不能放在Numpy数组中。但是,如果他像我一样组织它,它将只是一个numpy数组列表,而不是一个嵌套的Python列表。在形状匹配的地方,您可以“堆叠”并执行快速轴操作。否则,您将陷入列表迭代中。@Sebastian真的!它应该是一个3D阵列列表,OP的2D阵列形状相同,构成了3D阵列的平面。我不明白为什么会有这样的列表格式。为什么不将一个列表转换为您所拥有的列表,即将相同大小的数组放在相同的子列表中?为什么要将Numpy数组放在一个2D列表中,而不是全部放在一个Numpy数组中,或者至少放在一个1D数组中?@PM2Ring数组的大小不同,这意味着它们不能放在Numpy数组中。但是,如果他像我一样组织它,它将只是一个numpy数组列表,而不是一个嵌套的Python列表。在形状匹配的地方,您可以“堆叠”并执行快速轴操作。否则,您将陷入列表迭代中。@Sebastian真的!这应该是一个3D阵列的列表,OP相同形状的2D阵列构成了3D阵列的平面。非常感谢
a=[[np.array([2,4])、np.array([4,6])、[np.array([3,5])、np.array([5,7])]
然后
b=[np.mean(row,axis=0)for row in zip(*a)]
给出了确切的假设:
[array([2.5,4.5])、array([4.5,6.5])]
,我将对其进行大规模测试。非常感谢
a=[[np.array([2,4])、np.array([4,6])、[np.array([3,5])、np.array([5,7])]
然后
b=[np.mean(row,axis=0)表示zip中的行(*a)]
给出了确切的假设:
[array([2.5,4.5])、array([4.5,6.5])
,我将对其进行大规模测试。