numpy怎么增加维度和删除维度
导读:本文共4025字符,通常情况下阅读需要13分钟。同时您也可以点击右侧朗读,来听本文内容。按键盘←(左) →(右) 方向键可以翻页。
摘要: 楔子在 TensorFlow 中,可以给一个 tensor 增加一个维度、删除一个维度,那么在 Numpy 中该怎么呢?删除维度、增加维度先来看看如何增加一个维度:importnumpyasnparr=np.array([[[1,2,3],[2,3,4]]])print(arr)"""[[[123][234]]]&quo... ...
目录
(为您整理了一些要点),点击可以直达。在 TensorFlow 中,可以给一个 tensor 增加一个维度、删除一个维度,那么在 Numpy 中该怎么呢?
先来看看如何增加一个维度:
但是注意:只有数组长度在该维度上为 1,那么该维度才可以被删除。如果不是1,那么删除的话会报错。
删除只能删除数组长度为 1 所对应的维度,同理添加也是添加一个维度也只是让数组在这个维度上的长度变成 1,因为数组本来不存在这个维度的,但是我们强行加上了一个维度,那么数组在这个维度上的长度只能是 1。
以上就实现了数组维度的删除和增加,因为数组的元素是固定的,所以在删除维度和增加维度时,数组在该维度上的长度必须是 1。
另外,变化维度还可以使用 reshape,比如 arr 的维度是 (2, 1, 3),我们把第二个维度给去掉的话,那么直接 arr.reshape((2, 3)) 即可,增加维度也是同理,只要变化维度前后的元素个数不变即可。
最后,增加维度还有一种做法,但用的不多,举个栗子:
说实话,改变数组的维度不是特别常见,更常见的是删除数组的一行或者一列,举个栗子:
这种需求相对来说更加常见一些,那么应该怎么做呢?我们来看一下。
首先是删除:
删除列的话也是同理,只需要将 axis=0 换成 axis=1 即可,注意:如果不指定 axis 或者 axis 指定为 None,那么会 np.delete 会将传递的数组扁平化(变成一维数组),然后进行删除。举个栗子:
如果想增加一行或一列的话,要怎么做呢?
如果不指定 axis,那么仍然会将传递的数组扁平化,然后进行追加:
append 默认是在尾部进行追加,并且还要求维度要匹配,不是很方便。所以这里更推荐 insert 函数:
我们看到 insert 比 append 要方便很多,并且功能也更加强大一些,并且 append 完全可以使用 insert 实现,举个栗子:
最后,如果 insert 不指定维度,那么也是会先将数组扁平化,然后在进行 insert,举个栗子:
numpy怎么增加维度和删除维度的详细内容,希望对您有所帮助,信息来源于网络。