[Numpy-discussion] minor improvment to ones

Robert Kern robert.kern at gmail.com
Fri Jan 30 17:40:29 EST 2009


On Fri, Jan 30, 2009 at 16:32, Neal Becker <ndbecker2 at gmail.com> wrote:
> Robert Kern wrote:
>
>> On Fri, Jan 30, 2009 at 08:22, Neal Becker <ndbecker2 at gmail.com> wrote:
>>> Right now there are 2 options to create an array of constant value:
>>>
>>> 1) empty (size); fill (val)
>>>
>>> 2) ones (size) * val
>>>
>>> 1 has disadvantage of not being an expression, so can't be an arg to a
>>> function call.
>>
>> So wrap it in a function.
>>
>>> Also probably slower than create+fill @ same time
>>
>> Only marginally. In any case, (1) is exactly how ones() and zeros()
>> are implemented. I would be +1 on a patch that adds a filled()
>> function along the lines of ones() and zeros(), but I'm -1 on adding
>> this functionality to ones() or zeros().
>>
>>> 2 is probably slower than create+fill @ same time
>>>
>>> Now what would be _really_ cool is a special array type that would
>>> represent
>>> a constant array without wasting memory.  boost::ublas, for example, has
>>> this feature.
>>
>> In [2]: from numpy.lib.stride_tricks import as_strided
>>
>> In [3]: def hollow_filled(shape, value, dtype=None):
>>    ...:     x = asarray(value, dtype=dtype)
>>    ...:     return as_strided(x, shape, [0]*len(shape))
>>    ...:
>>
>> In [5]: hollow_filled([2,3,4], 5)
>> Out[5]:
>> array([[[5, 5, 5, 5],
>>         [5, 5, 5, 5],
>>         [5, 5, 5, 5]],
>>
>>        [[5, 5, 5, 5],
>>         [5, 5, 5, 5],
>>         [5, 5, 5, 5]]])
>>
>> In [6]: hollow_filled([2,3,4], 5.0)
>> Out[6]:
>> array([[[ 5.,  5.,  5.,  5.],
>>         [ 5.,  5.,  5.,  5.],
>>         [ 5.,  5.,  5.,  5.]],
>>
>>        [[ 5.,  5.,  5.,  5.],
>>         [ 5.,  5.,  5.,  5.],
>>         [ 5.,  5.,  5.,  5.]]])
>>
>
> Where can I find doc on stride_tricks?

Source is always the best place. as_strided is not exposed as such
since you can cause segfaults with it if you have a bug. Rather, it's
useful for devs to make tools that, once debugged, can't cause
segfaults.

> Nothing here:
> http://docs.scipy.org/doc/numpy/search.html?q=stride_tricks&check_keywords=yes&area=default

Use this search box to search the development version of the docs:

  http://docs.scipy.org/numpy/search/

-- 
Robert Kern

"I have come to believe that the whole world is an enigma, a harmless
enigma that is made terrible by our own mad attempt to interpret it as
though it had an underlying truth."
  -- Umberto Eco



More information about the NumPy-Discussion mailing list