首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何仅展平numpy数组的某些维度

如何仅展平numpy数组的某些维度
EN

Stack Overflow用户
提问于 2013-09-12 15:12:22
回答 3查看 135.1K关注 0票数 177

有没有一种快速的方法来“子展平”或者只展平numpy数组中的一些第一个维度?

例如,给定一个维数为(50,100,25)的numpy数组,结果维数将为(5000,25)

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-09-12 15:27:33

看看numpy.reshape吧。

代码语言:javascript
复制
>>> arr = numpy.zeros((50,100,25))
>>> arr.shape
# (50, 100, 25)

>>> new_arr = arr.reshape(5000,25)
>>> new_arr.shape   
# (5000, 25)

# One shape dimension can be -1. 
# In this case, the value is inferred from 
# the length of the array and remaining dimensions.
>>> another_arr = arr.reshape(-1, arr.shape[-1])
>>> another_arr.shape
# (5000, 25)
票数 172
EN

Stack Overflow用户

发布于 2014-10-25 02:14:30

对Alexander的答案稍作概括- np.reshape可以接受-1作为参数,意思是“总数组大小除以所有其他列出的维数的乘积”:

例如,使除最后一个维度外的所有维度变平:

代码语言:javascript
复制
>>> arr = numpy.zeros((50,100,25))
>>> new_arr = arr.reshape(-1, arr.shape[-1])
>>> new_arr.shape
# (5000, 25)
票数 97
EN

Stack Overflow用户

发布于 2019-04-23 10:30:17

另一种方法是使用numpy.resize(),如下所示:

代码语言:javascript
复制
In [37]: shp = (50,100,25)
In [38]: arr = np.random.random_sample(shp)
In [45]: resized_arr = np.resize(arr, (np.prod(shp[:2]), shp[-1]))
In [46]: resized_arr.shape
Out[46]: (5000, 25)

# sanity check with other solutions
In [47]: resized = np.reshape(arr, (-1, shp[-1]))
In [48]: np.allclose(resized_arr, resized)
Out[48]: True
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18757742

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档