Python 对交错数组求和“;“列”;这样

Python 对交错数组求和“;“列”;这样,python,arrays,numpy,Python,Arrays,Numpy,假设我有以下数组 import numpy as np matrix = np.array([ [[1, 2, 3, 4], [0, 1], [2, 3, 4, 5]], [[1, 2, 3], [4], [0, 1], [2, 0], [0, 0]], [[2, 2], [3, 4, 0], [1, 1, 0, 0], [0]], [[6, 3, 3, 4, 0], [4, 2,

假设我有以下数组

import numpy as np

matrix = np.array([
     [[1, 2,   3,   4], [0,   1], [2,   3,   4,  5]],
     [[1, 2,   3], [4], [0,   1], [2,   0], [0,  0]],
     [[2, 2], [3,   4,   0], [1,   1,   0,   0], [0]],
     [[6, 3,   3,   4,   0], [4,   2,   3,   4,  5]],
     [[1, 2,   3,   2], [0,   1,   2], [3,   4,  5]]])
正如你所看到的,这是一个交错排列的数组。我想做的是以某种方式对元素求和,以便输出为:

     [11, 11, 15, 18, 0, 8, 9, 9, 12, 15]

我想对矩阵“列”中的元素求和,但我不知道怎么做。

正如juanpa.arrivillaga在评论中提到的,你没有多维数组,你有一个一维数组的列表。您需要首先展平内部列表:

>>> np.array([[z for y in x for z in y] for x in matrix])
array([[1, 2, 3, 4, 0, 1, 2, 3, 4, 5],
       [1, 2, 3, 4, 0, 1, 2, 0, 0, 0],
       [2, 2, 3, 4, 0, 1, 1, 0, 0, 0],
       [6, 3, 3, 4, 0, 4, 2, 3, 4, 5],
       [1, 2, 3, 2, 0, 1, 2, 3, 4, 5]])
现在解决你的问题应该容易多了。该矩阵的形状为
(5,10)
,支持换位和行或列求和

您没有编写任何代码,因此我不会完全解决此问题,但使用此矩阵,您离:

array([11, 11, 15, 18,  0,  8,  9,  9, 12, 15])

正如juanpa.arrivillaga在评论中提到的,你没有多维数组,你有一个1-D的列表数组。您需要首先展平内部列表:

>>> np.array([[z for y in x for z in y] for x in matrix])
array([[1, 2, 3, 4, 0, 1, 2, 3, 4, 5],
       [1, 2, 3, 4, 0, 1, 2, 0, 0, 0],
       [2, 2, 3, 4, 0, 1, 1, 0, 0, 0],
       [6, 3, 3, 4, 0, 4, 2, 3, 4, 5],
       [1, 2, 3, 2, 0, 1, 2, 3, 4, 5]])
现在解决你的问题应该容易多了。该矩阵的形状为
(5,10)
,支持换位和行或列求和

您没有编写任何代码,因此我不会完全解决此问题,但使用此矩阵,您离:

array([11, 11, 15, 18,  0,  8,  9,  9, 12, 15])

你不能指望别人来解决你的任务不,那不是多维数组。选中
matrix.shape
,您将得到
(5,)
。Numpy不支持交错数组,它具有真正的多维数组。@juanpa.arrivillaga您是righ,Edited您不能指望其他人解决您的分配no,这不是多维数组。选中
matrix.shape
,您将得到
(5,)
。Numpy不支持交错数组,它有真正的多维数组。@juanpa.arrivillaga你说得对,编辑或者如果我们觉得疯狂:
np.array(list(map(sum)(zip(*map(itertools.chain.from_iterable,matrix)
@juanpa.arrivillaga:ah,不错!你的代码被这样的注释打断了,中间添加了“代码> >代码>字符,或者如果我们感到疯狂:<代码> NP.SART(list(map)(zip(*map(迭代工具,chay.fasyIdabl,Matrixα-yx))< /Calp> @ JuangaPa. Rivialaa: AHAH,很好!你的代码被这样的注释打破了,在中间添加了<代码> <代码>字符。