<p>问题可能出在<code>cols</code>变量上。<code>np.ceil</code>返回<code>np.float64</code>;是的,它是一个整数值,但仍然是一个float数据类型。重读<code>np.ceil</code>文档。你知道吗</p>
<pre><code>In [77]: np.ceil(1.23)
Out[77]: 2.0
In [78]: type(_)
Out[78]: numpy.float64
In [79]: np.ones((2,_77))
-
TypeError Traceback (most recent call last)
<ipython-input-79-af1036080a73> in <module>
> 1 np.ones((2,_77))
/usr/local/lib/python3.6/dist-packages/numpy/core/numeric.py in ones(shape, dtype, order)
212
213 """
> 214 a = empty(shape, dtype, order)
215 multiarray.copyto(a, 1, casting='unsafe')
216 return a
TypeError: 'numpy.float64' object cannot be interpreted as an integer
</code></pre>
<p>在<code>math</code>包中可以找到另一种方法:</p>
<pre><code>In [81]: import math
In [82]: math.ceil
Out[82]: <function math.ceil>
In [83]: math.ceil(1.23)
Out[83]: 2
In [84]: np.ones((1,math.ceil(1.23)))
Out[84]: array([[1., 1.]])
</code></pre>
<p><code>cols = int(cols)</code>也应该起作用。你知道吗</p>