对于一个最小的工作示例,让我们数字化一个二维数组。numpy.digitize
需要一维数组:
import numpy as np
N = 200
A = np.random.random((N, N))
X = np.linspace(0, 1, 20)
print np.digitize(A.ravel(), X).reshape((N, N))
... A copy is made only if needed.
在这种情况下,我如何知道是否需要ravel
副本?一般来说-有没有方法可以确定某个特定操作是创建副本还是视图?
这个问题与我刚才问的question非常相似:
您可以检查
base
属性。然而,这并不完美。您还可以使用
np.may_share_memory
检查它们是否共享内存。还可以检查flags属性:
但这最后一个对我来说有点可疑,虽然我不太明白为什么。。。
在reshape的文档中,有一些关于在无法创建视图时如何确保异常的信息:
这并不完全是对你问题的回答,但在某些情况下,它可能同样有用。
相关问题 更多 >
编程相关推荐