如何使用 np.newaxis 将 (1,16) 数组转换为 (1,16,1) 数组? [复制]
Posted
技术标签:
【中文标题】如何使用 np.newaxis 将 (1,16) 数组转换为 (1,16,1) 数组? [复制]【英文标题】:How can I trasform a (1,16) array in a (1,16,1) array with np.newaxis? [duplicate] 【发布时间】:2019-10-01 09:01:22 【问题描述】:我想改造这个数组 (1, 16)
[[4 4 4 4 4 4 4 4 4 4 4 4 0 0 0 0]]
在 (1,16,1) 数组中。
我试过了:
board = board[np.newaxis, :]
但这不是加速输出。
我该怎么做?
【问题讨论】:
board[:, np.newaxis]
什么是意外输出?
@MadPhysicist 一个形状为 (1, 16, 1) 的数组
【参考方案1】:
您必须将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]
【讨论】:
【参考方案2】:尝试重塑:
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】:另外,您可以使用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]
【讨论】:
【参考方案4】:我的首选方法(很容易找到新轴,并且只涉及 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)
正如 Mad Physicist 所说,这完全等同于使用 np.newaxis
:print(np.newaxis)
返回 None
。
【讨论】:
np.newaxis
是对None
的直接引用
我知道,但我发现记住 None
比记住 np.newaxis
更容易。偏好可能会有所不同:-)
我碰巧同意您的偏好和您的评论。只是想让未来的读者明白。以上是关于如何使用 np.newaxis 将 (1,16) 数组转换为 (1,16,1) 数组? [复制]的主要内容,如果未能解决你的问题,请参考以下文章
np newaxis 为 numpy ndarray(多维数组)增加一个轴
np.newaxis 为 numpy.ndarray(多维数组)增加一个轴
numpy给数据新增一个维度np.newaxis及其使用场景