当我尝试np.empty在用 numba 编译的函数定义中使用时遇到了这个奇怪的错误,并打开nopython=True以确保优化的输入有效。
这很奇怪,因为 numba 声称支持np.empty前两个参数,而我只使用前两个参数(我认为正确吗?),所以我不知道为什么它输入不正确。
@jit(nopython=True)
def empty():
return np.empty(5, np.float)
Run Code Online (Sandbox Code Playgroud)
在 ipython notebook 中定义上述函数后,
empty()
Run Code Online (Sandbox Code Playgroud)
给出以下错误消息:
@jit(nopython=True)
def empty():
return np.empty(5, np.float)
Run Code Online (Sandbox Code Playgroud) 我在 ipython 中遇到了 matplotlib 的一个非常奇怪的问题ax.transData.transform。基本上,在fig, ax = plt.subplots()声明的单元格中,运行ax.transData.transform或轴是不正确的。但是,如果您在后面的单元格中运行,它将返回正确的值。xyax.transData.transform
为了演示,下面是在声明的单元格中运行转换的代码fig, ax = plt.subplots():
fig, ax = plt.subplots()
ax.set_aspect('equal')
ax.set_ylim(-2,2)
ax.set_xlim(-5,5)
nsize=[x*100 for x in d]
yradius = (ax.transData.transform([(0,2)]) - ax.transData.transform([(0,1)]))[0,1]
print("yRadius: {}".format(yradius))
xradius = (ax.transData.transform([(2,0)]) - ax.transData.transform([(1,0)]))[0,0]
print("xRadius: {}".format(xradius))
Run Code Online (Sandbox Code Playgroud)
打印输出是
yRadius: 54.360000000000014
xRadius: 33.48000000000002
Run Code Online (Sandbox Code Playgroud)
在上述单元格下方的单元格中,如果我运行
yradius = (ax.transData.transform([(0,2)]) - ax.transData.transform([(0,1)]))[0,1]
print("yRadius: {}".format(yradius))
xradius = (ax.transData.transform([(2,0)]) - ax.transData.transform([(1,0)]))[0,0]
print("xRadius: {}".format(xradius))
Run Code Online (Sandbox Code Playgroud)
输出是
yRadius: 33.48000000000002
xRadius: 33.48000000000002
Run Code Online (Sandbox Code Playgroud)
为什么两个单元格的值不一样?尽管xRadius第一个单元格的 与底部单元格的值匹配,但yRadius是关闭的。我认为底部单元格的值是正确的,因为由于 …