配列が別の配列のビューであるかどうかを調べることはできますか?

numpy配列は "view status"を追跡しますか?

import numpy
a = numpy.arange(100)
b = a[0:10]
b[0] = 100
print a[0]
# 100 comes out as it is a view
b is a[0:10]
# False (hmm how to ask?)

私が探しているのは numpy.isview()か何かです。

私は、コードプロファイリングのために、これが正しいことをしていると確信し、私が思うときに意見を得ることを望みます。

5

2 答え

配列には基本属性もあります。

a = np.arange(10)
print a.base
None

b = a[2:9]
print b.base is a
True

c = b[:2]
print c.base is b
True
print c.base is a
False
5
追加された
ありがとうございます。 b_baseは "a"よりも優れています。array_interface __ ['data'] [0] == b .__ array_interface __ ['data'] [0] "
追加された 著者 Brian Larsen,
合意した、私はちょうどこれで遊んだ、それは良いです。
追加された 著者 Brian Larsen,
これは私のハックよりはるかに優れています。 +1、それは答えとして受け入れられるべきです。
追加された 著者 DSM,

ndarray.flags.owndata tells you whether the array owns its data. In your example:

In [18]: a.flags.owndata
Out[18]: True

In [19]: b.flags.owndata
Out[19]: False

明らかにあなたが求めているものほど正確ではありませんが、私が知る限りでは最高です。

3
追加された