擅长:python、mysql、java
<p>你的问题是乘法:<code>d = d * np.ones((1,n))</code>。NumPy尝试执行元素级乘法,但由于维度不匹配(ones数组只有一行),这将失败。但是,当d是标量时,NumPy可以推断出您的意思是乘标量,因此代码将运行。在</p>
<p>您真正想要做的是(据我所知)将每个元素展开为一个n长度的行。一种可能的解决方案是创建一个中间数组来保存新值,因为数组的大小是不可变的:</p>
<pre><code>def d2b(d, n):
d = np.array(d)
d = np.reshape(d, (1, -1))
power = np.flipud(2**np.arange(n))
g = np.zeros((np.shape(d)[1], n))
for i, num in enumerate(d[0]):
g[i] = num * np.ones((1,n))
b = np.floor((g%(2*power))/power)
return b
</code></pre>