我有一个矩阵列表:
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数组展平到一定深度吗?
答案 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]]