擅长:python、mysql、java
<p>以下是函数的正确命名空间:</p>
<ul>
<li><p><a href="https://docs.scipy.org/doc/numpy/reference/generated/numpy.ndarray.flatten.html" rel="noreferrer">^{<cd1>}</a></p></li>
<li><p><a href="https://docs.scipy.org/doc/numpy/reference/generated/numpy.ravel.html" rel="noreferrer">^{<cd2>}</a></p></li>
</ul>
<p>这两个函数都返回指向新内存结构的扁平1D数组。</p>
<pre><code>import numpy
a = numpy.array([[1,2],[3,4]])
r = numpy.ravel(a)
f = numpy.ndarray.flatten(a)
print(id(a))
print(id(r))
print(id(f))
print(r)
print(f)
print("\nbase r:", r.base)
print("\nbase f:", f.base)
---returns---
140541099429760
140541099471056
140541099473216
[1 2 3 4]
[1 2 3 4]
base r: [[1 2]
[3 4]]
base f: None
</code></pre>
<p>在上面的示例中:</p>
<ul>
<li>结果的存储位置不同</li>
<li>结果看起来一样</li>
<li>扁平化将返回一个副本</li>
<li>拉威尔会回头看。</li>
</ul>
<p>我们怎么检查东西是不是复制品?
使用<code>ndarray</code>的<code>.base</code>属性。如果是视图,基将是原始数组;如果是副本,基将是<code>None</code>。</p>