expand_dims(a, axis)
,其中a为输入的数组,axis为整型指定要增加的维数位置
可以结合shape()来看,shape()返回的是一个tuple,把其看成一个数组并指定下标。如果shape为(1, 2),则axis=0就是在shape下标0的地方插入一维,则shape变为(1, 1, 2);如果axis=2就是在shape下标2的地方插入一维,则shape变为(1, 2, 1)。
下面结合代码来看:
# 合并数组为二维
test1 = np.array([5, 10, 16, 26])
test2 = np.array([2.1, 5.4, 10.7, 11])
# 将二者均升维为二维数组
test1 = np.expand_dims(test1, 0) # expand_dims()方法
test2 = test2[np.newaxis, :] # newaxis方法,这里和expand_dims(, 0)一样
print(test1)
print(test2)
all_tests = np.concatenate([test1, test2])
print(all_tests)
这里的输出是:
[[ 5 10 16 26]]
[[ 2.1 5.4 10.7 11. ]]
[[ 5. 10. 16. 26. ]
[ 2.1 5.4 10.7 11. ]]
下面对一维数组一步步用expand_dims()来升维:
# expand_dims()说明
test = np.array([5, 10, 16, 26]) # 一维
print(test.shape) # (4, ) 一维且一维的长度是4
test = np.expand_dims(test, 0) # (1, 4) 二维且一维长度是1,二维长度是4
print(test.shape)
print(test)
test = np.expand_dims(test, 1) # (1, 1, 4) 三维且一维长度是4,二维长度是1,三维长度是1
print(test.shape)
print(test)
这里的输出为:
(4,)
(1, 4)
[[ 5 10 16 26]]
(1, 1, 4)
[[[ 5 10 16 26]]]
下面对二维数组一步步用expand_dims()来升维,下面的all_test是第一段代码里合并的结果:
print(all_tests.shape) # (2, 4) 换成all_tests来测试expand_dims()
all_tests = np.expand_dims(all_tests, 0) # (1, 2, 4) 因为在shape下标为0的地方插入一维,
print(all_tests.shape) # 则一维长度为1,二维长度为4,三维长度为2,四维长度为1
print(all_tests)
all_tests = np.expand_dims(all_tests, 1) # (1, 1, 2, 4) 在shape下标为1的地方插入一维
print(all_tests.shape) # 则一维长度为1,二维长度为1,三维长度为2,四维长度为4
print(all_tests)
这里的输出是:
(2, 4)
(1, 2, 4)
[[[ 5. 10. 16. 26. ]
[ 2.1 5.4 10.7 11. ]]]
(1, 1, 2, 4)
[[[[ 5. 10. 16. 26. ]
[ 2.1 5.4 10.7 11. ]]]]
最后说明一下对数组的n维度的认识:除数组最外面一层中括号,往里一层是一维,依次往里是二、三……n维。看对应维数长度就是看对应层中括号的对数,直到最里层就是看数组的长度。
标签:tests,升维,python,dims,shape,一维,print,expand From: https://www.cnblogs.com/easternE/p/16622557.html如:[1, 2, 3, 4]是(4, ),即一维长度是4;
[[1, 2, 3, 4], [5, 6, 7, 8]]是(2, 4)
[[[1, 2, 3, 4], [5, 6, 7, 8]]]是(1, 2, 4)