Search Results

Search found 13 results on 1 pages for 'morgoth'.

Page 1/1 | 1 

  • String comparison in Numpy

    - by Morgoth
    In the following example In [8]: import numpy as np In [9]: strings = np.array(['hello ', 'world '], dtype='|S10') In [10]: strings == 'hello' Out[10]: array([False, False], dtype=bool) The comparison fails because of the whitespace. Is there a Numpy built-in function that does the equivalent of In [12]: np.array([x.strip()=='hello' for x in strings]) Out[12]: array([ True, False], dtype=bool) which does give the correct result?

    Read the article

  • Repetitive content in docstrings

    - by Morgoth
    What are good ways to deal with repetitive content in docstrings? I have many functions that take 'standard' arguments, which have to be explained in the docstring, but it would be nice to write the relevant parts of the docstring only once, as this would be much easier to maintain and update. I naively tried the following: arg_a = "a: a very common argument" def test(a): ''' Arguments: %s ''' % arg_a pass But this does not work, because when I do help(test) I don't see the docstring. Is there a good way to do this?

    Read the article

  • Matplotlib canvas drawing

    - by Morgoth
    Let's say I define a few functions to do certain matplotlib actions, such as def dostuff(ax): ax.scatter([0.],[0.]) Now if I launch ipython, I can load these functions and start a new figure: In [1]: import matplotlib.pyplot as mpl In [2]: fig = mpl.figure() In [3]: ax = fig.add_subplot(1,1,1) In [4]: run functions # run the file with the above defined function If I now call dostuff, then the figure does not refresh: In [6]: dostuff(ax) I have to then explicitly run: In [7]: fig.canvas.draw() To get the canvas to draw. Now I can modify dostuff to be def dostuff(ax): ax.scatter([0.],[0.]) ax.get_figure().canvas.draw() This re-draws the canvas automatically. But now, say that I have the following code: def dostuff1(ax): ax.scatter([0.],[0.]) ax.get_figure().canvas.draw() def dostuff2(ax): ax.scatter([1.],[1.]) ax.get_figure().canvas.draw() def doboth(ax): dostuff1(ax) dostuff2(ax) ax.get_figure().canvas.draw() I can call each of these functions, and the canvas will be redrawn, but in the case of doboth(), it will get redrawn multiple times. My question is: how could I code this, such that the canvas.draw() only gets called once? In the above example it won't change much, but in more complex cases with tens of functions that can be called individually or grouped, the repeated drawing is much more obvious, and it would be nice to be able to avoid it. I thought of using decorators, but it doesn't look as though it would be simple. Any ideas?

    Read the article

  • Sans-serif math with latex in matplotlib

    - by Morgoth
    The following script: import matplotlib matplotlib.use('Agg') import matplotlib.pyplot as mpl mpl.rc('font', family='sans-serif') mpl.rc('text', usetex=True) fig = mpl.figure() ax = fig.add_subplot(1,1,1) ax.text(0.2,0.5,r"Math font: $451^\circ$") ax.text(0.2,0.7,r"Normal font (except for degree symbol): 451$^\circ$") fig.savefig('test.png') is an attempt to use a sans-serif font in matplotlib with LaTeX. The issue is that the math font is still a serif font (as indicated by the axis numbers, and as demonstrated by the labels in the center). Is there a way to set the math font to also be sans-serif?

    Read the article

  • Hide deprecated methods from tab completion

    - by Morgoth
    I would like to control which methods appear when a user uses tab-completion on a custom object in ipython - in particular, I want to hide functions that I have deprecated. I still want these methods to be callable, but I don't want users to see them and start using them if they are inspecting the object. Is this something that is possible?

    Read the article

  • Absolute path of a file object

    - by Morgoth
    This has been discussed on StackOverflow before - I am trying to find a good way to find the absolute path of a file object, but I need it to be robust to os.chdir(), so cannot use f = file('test') os.path.abspath(f.name) Instead, I was wondering whether the following is a good solution - basically extending the file class so that on opening, the absolute path of the file is saved: class File(file): def __init__(self, filename, *args, **kwargs): self.abspath = os.path.abspath(filename) file.__init__(self, filename, *args, **kwargs) Then one can do f = File('test','rb') os.chdir('some_directory') f.abspath # absolute path can be accessed like this Are there any risks with doing this?

    Read the article

  • Copy call signature to decorator

    - by Morgoth
    If I do the following def mydecorator(f): def wrapper(*args, **kwargs): f(*args, **kwargs) wrapper.__doc__ = f.__doc__ wrapper.__name__ = f.__name__ return wrapper @mydecorator def myfunction(a,b,c): '''My docstring''' pass And then type help myfunction, I get: Help on function myfunction in module __main__: myfunction(*args, **kwargs) My docstring So the name and docstring are correctly copied over. Is there a way to also copy over the actual call signature, in this case (a, b, c)?

    Read the article

  • Refresh decorator

    - by Morgoth
    I'm trying to write a decorator that 'refreshes' after being called, but where the refreshing only occurs once after the last function exits. Here is an example: @auto_refresh def a(): print "In a" @auto_refresh def b(): print "In b" a() If a() is called, I want the refresh function to be run after exiting a(). If b() is called, I want the refresh function to be run after exiting b(), but not after a() when called by b(). Here is an example of a class that does this: class auto_refresh(object): def __init__(self, f): print "Initializing decorator" self.f = f def __call__(self, *args, **kwargs): print "Before function" if 'refresh' in kwargs: refresh = kwargs.pop('refresh') else: refresh = False self.f(*args, **kwargs) print "After function" if refresh: print "Refreshing" With this decorator, if I run b() print '---' b(refresh=True) print '---' b(refresh=False) I get the following output: Initializing decorator Initializing decorator Before function In b Before function In a After function After function --- Before function In b Before function In a After function After function Refreshing --- Before function In b Before function In a After function After function So when written this way, not specifying the refresh argument means that refresh is defaulted to False. Can anyone think of a way to change this so that refresh is True when not specified? Changing the refresh = False to refresh = True in the decorator does not work: Initializing decorator Initializing decorator Before function In b Before function In a After function Refreshing After function Refreshing --- Before function In b Before function In a After function Refreshing After function Refreshing --- Before function In b Before function In a After function Refreshing After function because refresh then gets called multiple times in the first and second case, and once in the last case (when it should be once in the first and second case, and not in the last case).

    Read the article

  • Reducing size of a character array in Numpy

    - by Morgoth
    Given a character array: In [21]: x = np.array(['a ','bb ','cccc ']) One can remove the whitespace using: In [22]: np.char.strip(x) Out[22]: array(['a', 'bb', 'cccc'], dtype='|S8') but is there a way to also shrink the width of the column to the minimum required size, in the above case |S4?

    Read the article

  • numpy.equal with string values

    - by Morgoth
    The numpy.equal function does not work if a list or array contains strings: >>> import numpy >>> index = numpy.equal([1,2,'a'],None) Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: function not supported for these types, and can't coerce safely to supported types What is the easiest way to workaround this without looping through each element? In the end, I need index to contain a boolean array indicating which elements are None.

    Read the article

  • Setting package-wide variables during python setup.py install

    - by Morgoth
    Is there a way that when a user types python setup.py install to install a Python package, setup.py can be made to set specific variables at the base of the pacakge? A common example would be to basically set mypackage.__revision__ to be the svn revision of the checkout if one is working from svn. Another example case would be if the user can choose a global option, so that the option mypackage.__option__ be set according to a flag passed to setup.py, e.g. python setup.py install --set-flag=10 Then when using the package, mypackage.__option__ would equal 10.

    Read the article

  • Build multiple executables with small changes in objects

    - by Morgoth
    Consider the following Makefile COMP = compiler OBJECTS = file1 \ file2 \ file3 \ file4 \ file5_suffix \ file6 \ file7 \ file8 \ file9_suffix \ file10 all: $(OBJECTS) $(COMP) $(OBJECTS) -o bin/executable_suffix Is there an easy way to compile multiple executables for different values of suffix? For example, the equivalent of COMP = compiler OBJECTS1 = file1 \ file2 \ file3 \ file4 \ file5_s1 \ file6 \ file7 \ file8 \ file9_s1 \ file10 OBJECTS2 = file1 \ file2 \ file3 \ file4 \ file5_s2 \ file6 \ file7 \ file8 \ file9_s2 \ file10 all: $(OBJECTS1) $(OBJECTS2) $(COMP) $(OBJECTS1) -o bin/executable_s1 $(COMP) $(OBJECTS2) -o bin/executable_s2 but without redefining the whole list of objects? In the real life case I am dealing with, there might be 50+ objects and a dozen binaries to build, with only small changes between the object list each time, so it would be nice not to have to list all the objects each time.

    Read the article

  • Get parent function

    - by Morgoth
    Is there a way to find what function called the current function? So for example: def first(): second() def second(): # print out here what function called this one Any ideas?

    Read the article

1