假设我有一个多维Numpy数组。现在我想:
startIndex
和endIndex
定义的特定行范围。你知道吗下面的代码实现了这个技巧,但是这是性能最好的吗?你知道吗
因为我的数组很大,所以我可以(内存中立)切掉原始数组,这样之后原始数组就是剩余的。所以除了新数组的头的一些开销之外,这不会花费额外的内存吗?
如果我们保留原来的数组,下面的片段(创建新数组)是最有效的解决方案吗?
示例:
import numpy as np
X = np.random.random((6, 2))
print('Orig',X)
startIndex = 2
endIndex = 4
print('Slice ',X[startIndex:endIndex])
print('LeftOver ',np.concatenate((X[:startIndex-1],X[endIndex:])))
输出:
Orig [[ 0.94661646 0.3911347 ]
[ 0.6807441 0.676658 ]
[ 0.81109554 0.18089991]
[ 0.6161699 0.19907537]
[ 0.12859196 0.34866049]
[ 0.22283545 0.04949782]]
Slice [[ 0.81109554 0.18089991]
[ 0.6161699 0.19907537]]
LeftOver [[ 0.94661646 0.3911347 ]
[ 0.12859196 0.34866049]
[ 0.22283545 0.04949782]]
连接制作一个副本,如果顺序很重要,您需要它。你知道吗
但如果你的切片很薄,而且顺序无关紧要,那么更经济的方法是:
因为最多只能复制2倍大小的切片,而不是整个数组。你知道吗
它给出:
相关问题 更多 >
编程相关推荐