我尝试在Spyder上运行以下代码(Python 2.7.11):
# -*- coding: utf-8 -*-
import numpy as np
import pandas as pd
%matplotlib inline
import matplotlib.pyplot as plt
import matplotlib.cm as cm
import tensorflow as tf
# settings
LEARNING_RATE = 1e-4
# set to 20000 on local environment to get 0.99 accuracy
TRAINING_ITERATIONS = 2000
DROPOUT = 0.5
BATCH_SIZE = 50
# set to 0 to train on all available data
VALIDATION_SIZE = 2000
# image number to output
IMAGE_TO_DISPLAY = 10
但我收到了这个错误:
line 10
%matplotlib inline
^
SyntaxError: invalid syntax.
如果有人给我解释,我感激不尽。
P.S。代码来自Kaggle竞赛项目:Digit Recognizer
答案 0 :(得分:47)
只有IPython命令行支持Line magics。它们不能简单地在脚本中使用,因为%something
不是正确的Python语法。
如果要从脚本执行此操作,则必须访问IPython API,然后调用run_line_magic
函数。
而不是%matplotlib inline
,您必须在脚本中执行以下操作:
from IPython import get_ipython
get_ipython().run_line_magic('matplotlib', 'inline')
this answer中描述了类似的方法,但它使用了已弃用的magic
函数。
请注意,该脚本仍需要在IPython中运行。在vanilla Python下,get_ipython
函数返回None
,get_ipython().run_line_magic
将引发AttributeError
}。
答案 1 :(得分:5)
%matplotlib inline
中的语法'%'被iPython识别(设置它来处理魔术方法),而不是Python本身,它给出了一个SyntaxError。
Here is given one solution.
答案 2 :(得分:4)
如果您在脚本的顶部包含以下代码,matplotlib
将在IPython
环境(如jupyter,氢原子插件......)中内联运行,并且它仍然有效如果您通过命令行直接启动脚本(matplotlib
不会内联运行,并且图表将像往常一样在弹出窗口中打开)。
from IPython import get_ipython
ipy = get_ipython()
if ipy is not None:
ipy.run_line_magic('matplotlib', 'inline')
答案 3 :(得分:4)
由于仅IPython命令行不支持换行符,因此Python cl不支持换行符,请使用:'exec(%matplotlib inline)'
而不是%matplotlib inline
答案 4 :(得分:1)
为什么这不起作用有几个原因。
matplotlib可能未正确安装。 你试过跑步吗?
conda install matplotlib
如果这不起作用,请查看%PATH%环境变量,它是否包含库和python路径?
答案 5 :(得分:0)
这是您使用Julia的情况:
Julia中IPython的%matplotlib的类似物是使用PyPlot包,该包为Matplotlib提供了Julia接口,包括IJulia笔记本中的内联图。 (默认情况下,Julia中已经加载了等效的numpy。) 给定PyPlot,%matplotlib内联的类似物正在使用PyPlot,因为PyPlot默认为IJulia中的内联图。
答案 6 :(得分:-1)
而不是%matplotlib内联,它不是一个python脚本所以我们可以像这样写它会工作 来自IPython import get_ipython get_ipython()。run_line_magic(' matplotlib',' inline')