import numpy as np
# create a 2D array
a = np.array([[1,2,3], [4,5,6], [1,2,3], [4,5,6],[1,2,3], [4,5,6],[1,2,3], [4,5,6]])
print(a.shape)
# shape of a = (8,3)
b = np.reshape(a, (8, 3, -1))
# changing the shape, -1 means any number which is suitable
print(b.shape)
# size of b = (8,3,1)
Args:
x: 2darray, (n_time, n_in)
agg_num: int, number of frames to concatenate.
hop: int, number of hop frames.
Returns:
3darray, (n_blocks, agg_num, n_in)
def d_2d_to_3d(x, agg_num, hop):
# Pad to at least one block.
len_x, n_in = x.shape
if (len_x < agg_num): #not in get_matrix_data
x = np.concatenate((x, np.zeros((agg_num - len_x, n_in))))
# main 2d to 3d.
len_x = len(x)
i1 = 0
x3d = []
while (i1 + agg_num <= len_x):
x3d.append(x[i1 : i1 + agg_num])
i1 += hop
return np.array(x3d)
9条答案
按热度按时间3df52oht1#
除了其他答案之外,您还可以对
numpy.newaxis
使用切片:或者甚至是这样的(它适用于任意维数):
2exbekwf2#
83qze16e3#
0ejtzxu14#
idv4meu85#
希望这个函数能帮助你把二维数组转换成三维数组。
omjgkv6w6#
如果您只想向(x,y,1)添加第三个轴(x,y),Numpy允许您使用
dstack
命令轻松完成此操作。你需要转置(
.T
),使它变成你想要的(x,y,1)格式。carvr3hs7#
您可以使用整形来完成此操作
例如,您有一个形状为35 x 750(二维)的数组A,您可以使用A.reshape(35,25,30)将形状更改为35 x 25 x 30(三维)
更多信息请参见此处的文档
ajsxfq5m8#
简单的方法,加上一些数学
一开始你知道数组元素的数量,比如说100,然后分3步划分100,比如:
25 * 2 * 2 =一百
或:4 * 5 * 5 = 100
另一种方式:
至4D:
1bqhqjot9#
第一个选项:整形
第二个选项:扩展尺寸