我有一个看起来像这样的数组:
test = np.zeros (7110, 514)
我需要将前90个值(行)“解包”为第二维的第一个值,再将后90个值(行)“解包”为第二维的第二个值,依此类推,这样所需的输出将具有形状:
desired_output = np.zeros(90, 79, 514)
我尝试过类似的操作:
a = np.split(test, 90, axis=1)
test1 = np.reshape(a, (79,90, 514))
但这只是把我拖了整条兔子……谢谢您的帮助!
答案 0 :(得分:1)
我不知道我是否理解这个问题,您是否有7110行,每行514个元素,并且想将7110行“分组”为90 x 79行?
因为这样您可以执行以下操作:
>>> np.array(range(24)).reshape((6, 4))
array([[ 0, 1, 2, 3],
[ 4, 5, 6, 7],
[ 8, 9, 10, 11],
[12, 13, 14, 15],
[16, 17, 18, 19],
[20, 21, 22, 23]])
这些是6行,每行4个元素。
>>> np.array(range(24)).reshape((6, 4)).reshape(3, 2, 4)
array([[[ 0, 1, 2, 3],
[ 4, 5, 6, 7]],
[[ 8, 9, 10, 11],
[12, 13, 14, 15]],
[[16, 17, 18, 19],
[20, 21, 22, 23]]])
我们按原样保留行,但得到3x2行而不是6行。
所以您需要的代码就是:
desired_output = a.reshape(90, 79, 514)