如何将3D numpy数组转换为子维数组? 例如,我有一个3D numpy形状的数组(100,3,3),我想将它转换为100个2D形状(3,3)数组的矢量?
答案 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,:,:]