【发布时间】:2014-09-14 06:52:47
【问题描述】:
在链接上
http://scipy-lectures.github.io/advanced/advanced_numpy/
有说法,
没有办法表示给定一个步幅的数组 c 和 a 的内存块。所以reshape操作需要在这里进行复制。
这个副本如何在 numpy 中工作?那是什么时间复杂度? numpy 如何了解无法使用相同数组表示的进一步数组?
【问题讨论】:
在链接上
http://scipy-lectures.github.io/advanced/advanced_numpy/
有说法,
没有办法表示给定一个步幅的数组 c 和 a 的内存块。所以reshape操作需要在这里进行复制。
这个副本如何在 numpy 中工作?那是什么时间复杂度? numpy 如何了解无法使用相同数组表示的进一步数组?
【问题讨论】:
如果你有一个数组的两个维度,形状为sh0 和sh1,步幅为st0 和st1,你想合并成一个维度的形状sh0*sh1,条件是能够在没有副本的情况下这样做是st0 == sh1*st1。请注意,形状中维度出现的顺序是相关的,并且在具有正步长的 C 顺序数组中,维度 0 位于维度 1 之前。
可能存在需要更精细分析的情况,关于要乘以哪个步幅和形状以与哪个步幅进行比较(如果您有 Fortran 顺序数组或负步幅),但基本前提仍然大致相同。
【讨论】: