求一个交错的数组"列"通过这种方式

时间:2017-07-11 07:58:39

标签: 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,   3,   4,  5]],
     [[1, 2,   3,   2], [0,   1,   2], [3,   4,  5]]])

正如您所看到的,它是一个错开的阵列。我想要做的是以某种方式对元素求和,使输出为:

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

我想总结"列"中的元素。矩阵,但我不知道该怎么做。

1 个答案:

答案 0 :(得分:4)

正如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),并支持T进行转置,np.sum()用于求和行或列。

你没有写任何代码,所以我不会完全解决问题,但是使用这个矩阵,你离一步之遥:

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