<p>引用<a href="https://docs.scipy.org/doc/numpy-1.13.0/reference/generated/numpy.isfortran.html" rel="nofollow noreferrer">^{<cd1>} documentation</a>(我的重点):</p>
<blockquote>
<p>Returns True if the array is Fortran contiguous <strong>but not</strong> C contiguous.</p>
<p>This function is obsolete and, because of changes due to relaxed stride checking, its return value for the same array may differ for versions of NumPy >= 1.10.0 and previous versions. If you only want to check if an array is Fortran contiguous use <code>a.flags.f_contiguous</code> instead. </p>
</blockquote>
<p>这里有几点需要注意:</p>
<ol>
<li>向量是Fortran和C连续的,因此函数返回false。你知道吗</li>
<li>功能已过时</li>
</ol>
<p>有一种检查数组的替代方法,应该适合您的情况:</p>
<pre><code>a = np.zeros((3, 1), order='F')
print(a.flags)
# C_CONTIGUOUS : True
# F_CONTIGUOUS : True
# OWNDATA : True
# WRITEABLE : True
# ALIGNED : True
# UPDATEIFCOPY : False
print(a.flags.f_contiguous)
# True
</code></pre>
<p>不能编辑标志。不过,有一些技巧。例如,可以使用转置将2D C数组转换为F数组(尽管使用交换的维度):</p>
<pre><code>print(np.ones((3, 2), order='C').flags)
# C_CONTIGUOUS : True
# F_CONTIGUOUS : False
# ....
print(np.ones((3, 2), order='C').T.flags)
# C_CONTIGUOUS : False
# F_CONTIGUOUS : True
# ....
</code></pre>