将numpy 3d数组转换为1d的2d数组

时间:2017-06-01 11:06:11

标签: python numpy

如何将3D numpy数组转换为子维数组? 例如,我有一个3D numpy形状的数组(100,3,3),我想将它转换为100个2D形状(3,3)数组的矢量?

2 个答案:

答案 0 :(得分:4)

为此,请使用numpy.split功能。假设你有

my_array = np.zeros((100, 3, 3))

使用:

my_new_array = np.split(my_array, 100, axis=0).

从这里你将获得一个包含100个形状(1,3,3)数组的数组。如果你想获得一个包含(3,3)数组的列表,只需使用列表推导:

my_list = [my_array[i] for i in range(np.shape(my_array)[0])]

答案 1 :(得分:0)

根据this answer需要这个,以便各个3x3数组成为savemat中的单元格元素:

import numpy
A = numpy.zeros((100,3,3))
B = numpy.empty((100,), dtype=numpy.object)
for i in range(100): B[i] = A[i,:,:]