将矩阵数组展平为单个矩阵(python)

时间:2018-11-27 07:34:05

标签: python arrays numpy flatten

我有一个矩阵列表:

time.setText(String.valueOf(System.currentTimeMillis()));

我想通过以下方式展平它们:

SimpleDateFormat formatter = new SimpleDateFormat("dd/MM/yyyy");
String dateString = formatter.format(new Date(Long.parseLong(time.getText().toString())));
time.setText(dateString);

arr = [array([[1, 2, 3], [7, 8, 9]]), array([[4, 5, 6], [0, 0, 1]])] 将其展平为单个数字数组。 我尝试过:[[1, 2, 3], [7, 8, 9], [4, 5, 6], [0, 0, 1]] 它可以完成工作,但是矩阵的所有行都是numpy数组。 有什么办法可以将numpy数组展平到一定深度吗?

2 个答案:

答案 0 :(得分:0)

您应该使用重塑:

out = arr.reshape((4,3))

答案 1 :(得分:0)

您想要的是numpy中的vstack函数。它需要一个ndarray元组并返回一个新的ndarray,这是将它们垂直堆叠而第一个ndarray在顶部等的结果。

例如:

import numpy as np

>>> a = np.array([1, 2])
>>> b = np.array([3, 4])
>>> c = np.array([5, 6])
>>> np.vstack(a, b)
array([[1, 2],
       [3, 4],
       [5, 6]])

对于您而言,您可以轻松地在ndarray列表上调用tuple函数

>>> arr = [array([[1, 2, 3], [7, 8, 9]]), array([[4, 5, 6], [0, 0, 1]])]
>>> np.vstack(tuple(arr))
array([[1, 2, 3],
       [7, 8, 9],
       [4, 5, 6],
       [0, 0, 1]])

如果您希望将答案作为python列表,则只需对结果调用numpy的ndarray.tolist函数,如下所示:

>>> np.ndarray.tolist(np.vstack(arr))
[[1, 2, 3], [7, 8, 9], [4, 5, 6], [0, 0, 1]]