如何使用np.newaxis将(1,16,1)数组转换为(1,16,1)数组?

时间:2019-05-14 10:44:09

标签: python arrays numpy

我要转换此数组(1、16)

[[4 4 4 4 4 4 4 4 4 4 4 4 0 0 0 0]]
(p)在(1,16,1)数组中。

我尝试过:

board = board[np.newaxis, :]

,但不是输出。

我该怎么做?

4 个答案:

答案 0 :(得分:2)

您必须将np.newaxis放在要使用此新轴的尺寸上。

board[np.newaxis,:] -> puts the axis in the first dimension [1,1,16]
board[:,np.newaxis] -> puts the axis in the second dimension [1,1,16]
board[:,:,np.newaxis] -> puts the axis in the third dimension [1,16,1]

答案 1 :(得分:1)

我的首选方法(很容易找到新轴,并且只涉及内置的None

import numpy as np
a1 = np.array([[4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 0, 0, 0, 0]])
print(a1[:,:,None].shape)

就像疯物理学家提到的那样,这严格等同于使用np.newaxisprint(np.newaxis)返回None

答案 2 :(得分:1)

尝试重塑:

import numpy as np

a = np.array([[4,4,4,4,4,4,4,4,4,4,4,4,0,0,0,0]])

print(a.reshape(1,16,1).shape)

答案 3 :(得分:1)

此外,您可以按以下方式使用numpy.expand_dims()

# input arrray
In [41]: arr
Out[41]: array([[4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 0, 0, 0, 0]])

In [42]: arr.shape
Out[42]: (1, 16)

# insert a singleton dimension at the end    
In [44]: arr_3D = np.expand_dims(arr, -1)

# desired shape
In [45]: arr_3D.shape
Out[45]: (1, 16, 1)

数组升级的其他方法是:

In [47]: arr[..., None]

In [48]: arr[..., np.newaxis]