【发布时间】:2019-09-27 14:36:36
【问题描述】:
我想找到一个 reshape 函数,它能够将我的不同维度的数组转换为相同维度的数组。让我解释一下:
import numpy as np
a = np.array([[[1,2,3,3],[1,2,3,3]],[[1,2,3,3],[1,2,3,3]]])
b = np.array([[[1,2,3,3],[1,2,3,3]],[[1,2,3,3],[1,2,3,3]],[[1,2,3,3],[1,2,3,4]]])
c = np.array([[[1,2,3,3],[1,2,3,3]]])
我希望能够使b,c 形状等于a 形状。但是,np.reshape 会引发错误,因为正如此处 (Numpy resize or Numpy reshape) 所述,该函数明确用于处理相同的维度。
我想要该函数的某个版本,如果形状较小,则在第一个维度的开头添加零,如果形状较大,则删除开头。我的示例将如下所示:
b = np.array([[[1,2,3,3],[1,2,3,3]],[[1,2,3,3],[1,2,3,4]]])
c = np.array([[[0,0,0,0],[0,0,0,0]],[[1,2,3,3],[1,2,3,3]]])
我需要编写自己的函数来做到这一点吗?
【问题讨论】:
-
有一个
np.pad函数。但这可能并不比答案更容易使用。有很多不同的填充方式,很难提供通用的功能。在您的情况下,您在一开始就做了奇怪的填充!从长远来看,你会更好地理解所提供的答案,而不是寻找一个完全符合你需要的函数。