詹惠儿

2018-11-09   阅读量: 1021

数据分析师 Python数据分析 Python编程

关于Numpy 中的 reshape 操作

扫码加入数据分析学习群

关于 numpy 中的 array,改变其 shape,有时可以有时不可以,这很奇怪。

这时,slc 无法改变 shape,这主要和 arr 在内存中的存储形式有关,在初始化 arr 的时候,里面的数据就按顺序排好了,而切片取前三列后如果想进行改变形状的操作,就需要在内存中跳跃,这对计算机来说是很困难的。使用 resize 同样无法改变形状

这次给出的提示更加明了 only works on single-segment arrays 就是因为此时数据分段了。可以用 flags 属性查看一下,slc 并不拥有数据,而是引用 base 数组的数据。没有数据且引用的数据在内存中不连续就是无法 resize 的原因。

reshape 创建一个全新的 array 而不改变原 array,所以不存在上述问题

之所以用 view 来举例是因为一般切片会产生不连续的 array(内存存储),而切片产生的正是原 array 的 view,当然获取 view 有很多种方式,比如直接 newarr = arr.view().

0.0000 0 2 关注作者 收藏

评论(0)


暂无数据

推荐课程

推荐帖子