David Cournapeau | 1 Feb 05:33
Picon

Re: which Python for OS X to build installers?

On Sun, Jan 31, 2010 at 11:43 PM, Ralf Gommers
<ralf.gommers <at> googlemail.com> wrote:
> Hi,
>
> With only a few changes (see diff below) to pavement.py I managed to build a
> dmg installer. For this I used the Python in the bootstrap virtualenv
> however, instead of the one in /Library/Frameworks/Python.framework/. Does
> this matter?

Yes it does. The binary installers should target the python from
python.org, nothing else.

> For making releases, would I need the framework build? Do I need 32- and
> 64-bit versions of Python 2.4, 2.5 and 2.6?

The python from python.org do not support 64 bits (yet), so just build
for ppc/x86. I never bothered with ppc64, and I think we can actually
give up on ppc soon.

cheers,

David
Ralf Gommers | 1 Feb 12:27
Gravatar

Re: which Python for OS X to build installers?



On Mon, Feb 1, 2010 at 12:33 PM, David Cournapeau <cournape <at> gmail.com> wrote:
On Sun, Jan 31, 2010 at 11:43 PM, Ralf Gommers
<ralf.gommers <at> googlemail.com> wrote:
> Hi,
>
> With only a few changes (see diff below) to pavement.py I managed to build a
> dmg installer. For this I used the Python in the bootstrap virtualenv
> however, instead of the one in /Library/Frameworks/Python.framework/. Does
> this matter?

Yes it does. The binary installers should target the python from
python.org, nothing else.

> For making releases, would I need the framework build? Do I need 32- and
> 64-bit versions of Python 2.4, 2.5 and 2.6?

The python from python.org do not support 64 bits (yet), so just build
for ppc/x86. I never bothered with ppc64, and I think we can actually
give up on ppc soon.


Thanks David, that's clear.

Can anyone please confirm that the MD5 checksum for the OS X installer for 2.6.4 at www.python.org/download/releases/ is 745494373683081a04cc71522f7c440e? I found an alternative download at openlogic.com, but if it's not the same as the python.org version then I won't bother with it.

Cheers,
Ralf

_______________________________________________
NumPy-Discussion mailing list
NumPy-Discussion <at> scipy.org
http://mail.scipy.org/mailman/listinfo/numpy-discussion
Ernest Adrogué | 1 Feb 18:02
Picon

np.bincount raises MemoryError when given an empty array

Hello,

Consider the following code:

for j in range(5):
	f = np.bincount(x[y == j])

It fails with MemoryError whenever y == j is all False element-wise.

In [96]: np.bincount([])
---------------------------------------------------------------------------
MemoryError                               Traceback (most recent call last)

/home/ernest/≤ipython console> in <module>()

MemoryError: 

In [97]: np.__version__
Out[97]: '1.3.0'

Is this a bug?

Bye.
Keith Goodman | 1 Feb 18:09
Picon
Gravatar

Re: np.bincount raises MemoryError when given an empty array

2010/2/1 Ernest Adrogué <eadrogue <at> gmx.net>:
> Hello,
>
> Consider the following code:
>
> for j in range(5):
>        f = np.bincount(x[y == j])
>
> It fails with MemoryError whenever y == j is all False element-wise.
>
>
> In [96]: np.bincount([])
> ---------------------------------------------------------------------------
> MemoryError                               Traceback (most recent call last)
>
> /home/ernest/≤ipython console> in <module>()
>
> MemoryError:
>
> In [97]: np.__version__
> Out[97]: '1.3.0'
>
> Is this a bug?
>
> Bye.

I get it to work sometimes:

$ ipython
>> import numpy as np
>> np.bincount([])
---------------------------------------------------------------------------
MemoryError:
>> np.bincount(())
   array([0])
>> np.bincount([])
   array([0])
>> np.bincount([])
---------------------------------------------------------------------------
MemoryError:
>> np.__version__
   '1.4.0rc2'
josef.pktd | 1 Feb 22:55
Picon

Re: np.bincount raises MemoryError when given an empty array

On Mon, Feb 1, 2010 at 12:09 PM, Keith Goodman <kwgoodman <at> gmail.com> wrote:
> 2010/2/1 Ernest Adrogué <eadrogue <at> gmx.net>:
>> Hello,
>>
>> Consider the following code:
>>
>> for j in range(5):
>>        f = np.bincount(x[y == j])
>>
>> It fails with MemoryError whenever y == j is all False element-wise.
>>
>>
>> In [96]: np.bincount([])
>> ---------------------------------------------------------------------------
>> MemoryError                               Traceback (most recent call last)
>>
>> /home/ernest/≤ipython console> in <module>()
>>
>> MemoryError:
>>
>> In [97]: np.__version__
>> Out[97]: '1.3.0'
>>
>> Is this a bug?
>>
>> Bye.
>
> I get it to work sometimes:
>
> $ ipython
>>> import numpy as np
>>> np.bincount([])
> ---------------------------------------------------------------------------
> MemoryError:
>>> np.bincount(())
>   array([0])
>>> np.bincount([])
>   array([0])
>>> np.bincount([])
> ---------------------------------------------------------------------------
> MemoryError:
>>> np.__version__
>   '1.4.0rc2'
> _______________________________________________
> NumPy-Discussion mailing list
> NumPy-Discussion <at> scipy.org
> http://mail.scipy.org/mailman/listinfo/numpy-discussion
>

I don't get a memory error but the results are strange for empty

>>> x=np.arange(5);np.bincount(x[x == 7]).shape
(39672457,)
>>> (np.bincount(x[x == 7])==0).all()
True

>>> x=np.arange(5);np.bincount(x[x == 2]).shape
(3,)

Josef
David Cournapeau | 2 Feb 02:37
Picon

Re: np.bincount raises MemoryError when given an empty array

josef.pktd <at> gmail.com wrote:
> On Mon, Feb 1, 2010 at 12:09 PM, Keith Goodman <kwgoodman <at> gmail.com> wrote:
>> 2010/2/1 Ernest Adrogué <eadrogue <at> gmx.net>:
>>> Hello,
>>>
>>> Consider the following code:
>>>
>>> for j in range(5):
>>>        f = np.bincount(x[y == j])
>>>
>>> It fails with MemoryError whenever y == j is all False element-wise.
>>>
>>>
>>> In [96]: np.bincount([])
>>> ---------------------------------------------------------------------------
>>> MemoryError                               Traceback (most recent call last)
>>>
>>> /home/ernest/≤ipython console> in <module>()
>>>
>>> MemoryError:
>>>
>>> In [97]: np.__version__
>>> Out[97]: '1.3.0'
>>>
>>> Is this a bug?
>>>
>>> Bye.
>> I get it to work sometimes:
>>
>> $ ipython
>>>> import numpy as np
>>>> np.bincount([])
>> ---------------------------------------------------------------------------
>> MemoryError:
>>>> np.bincount(())
>>   array([0])
>>>> np.bincount([])
>>   array([0])
>>>> np.bincount([])
>> ---------------------------------------------------------------------------
>> MemoryError:
>>>> np.__version__
>>   '1.4.0rc2'
>> _______________________________________________
>> NumPy-Discussion mailing list
>> NumPy-Discussion <at> scipy.org
>> http://mail.scipy.org/mailman/listinfo/numpy-discussion
>>
> 
> I don't get a memory error but the results are strange for empty

That may just be because you have enough memory for the (bogus) result: 
the value is a random memory value interpreted as an intp value, hence 
most likely very big on 64 bits system.

It should be easy to fix, but I am not sure what is the expected result. 
An empty array ?

David
josef.pktd | 2 Feb 05:05
Picon

Re: np.bincount raises MemoryError when given an empty array

On Mon, Feb 1, 2010 at 8:37 PM, David Cournapeau <david <at> silveregg.co.jp> wrote:
> josef.pktd <at> gmail.com wrote:
>> On Mon, Feb 1, 2010 at 12:09 PM, Keith Goodman <kwgoodman <at> gmail.com> wrote:
>>> 2010/2/1 Ernest Adrogué <eadrogue <at> gmx.net>:
>>>> Hello,
>>>>
>>>> Consider the following code:
>>>>
>>>> for j in range(5):
>>>>        f = np.bincount(x[y == j])
>>>>
>>>> It fails with MemoryError whenever y == j is all False element-wise.
>>>>
>>>>
>>>> In [96]: np.bincount([])
>>>> ---------------------------------------------------------------------------
>>>> MemoryError                               Traceback (most recent call last)
>>>>
>>>> /home/ernest/≤ipython console> in <module>()
>>>>
>>>> MemoryError:
>>>>
>>>> In [97]: np.__version__
>>>> Out[97]: '1.3.0'
>>>>
>>>> Is this a bug?
>>>>
>>>> Bye.
>>> I get it to work sometimes:
>>>
>>> $ ipython
>>>>> import numpy as np
>>>>> np.bincount([])
>>> ---------------------------------------------------------------------------
>>> MemoryError:
>>>>> np.bincount(())
>>>   array([0])
>>>>> np.bincount([])
>>>   array([0])
>>>>> np.bincount([])
>>> ---------------------------------------------------------------------------
>>> MemoryError:
>>>>> np.__version__
>>>   '1.4.0rc2'
>>> _______________________________________________
>>> NumPy-Discussion mailing list
>>> NumPy-Discussion <at> scipy.org
>>> http://mail.scipy.org/mailman/listinfo/numpy-discussion
>>>
>>
>> I don't get a memory error but the results are strange for empty
>
> That may just be because you have enough memory for the (bogus) result:
> the value is a random memory value interpreted as an intp value, hence
> most likely very big on 64 bits system.
>
> It should be easy to fix, but I am not sure what is the expected result.
> An empty array ?

>>> np.bincount([])
array([0, 0, 0, ..., 0, 0, 0])
>>> np.bincount(np.array([]).astype(int))
array([0, 0, 0, ..., 0, 0, 0])
>>> np.bincount(())
array([0, 0, 0, ..., 0, 0, 0])
>>> np.bincount(()).shape
(41570297,)

I think this could be considered as a correct answer, the count of any
integer is zero.

Returning an array with one zero, or the empty array or raising an
exception? I don't see much of a pattern

>>> x=np.arange(5);np.unique(x[x == 7])
array([], dtype=int32)
>>> np.unique(x[x == 7], return_index=1)
(array([], dtype=int32), array([], dtype=bool))
>>> np.unique(x[x == 7], return_inverse=1)
(array([], dtype=int32), array([], dtype=bool))

>>> x=np.arange(5);np.histogram(x[x == 7])
Traceback (most recent call last):
  File "<pyshell#136>", line 1, in <module>
    x=np.arange(5);np.histogram(x[x == 7])
  File "C:\Programs\Python25\Lib\site-packages\numpy\lib\function_base.py",
line 202, in histogram
    range = (a.min(), a.max())
ValueError: zero-size array to ufunc.reduce without identity

>>> x=np.arange(5);np.digitize(x[x == 7],np.arange(6))
Traceback (most recent call last):
  File "<pyshell#140>", line 1, in <module>
    x=np.arange(5);np.digitize(x[x == 7],np.arange(6))
ValueError: Both x and bins must have non-zero length

the only meaningful test cases, I can think of, work both with
array([0]) or empty array

>>> np.sum(x[x == 7]) == np.bincount(x[x == 7]).sum()
True

>>> 1.*np.array([0]).astype(int) / np.sum(x[x == 7])
array([ NaN])
>>> 1.*np.array([]).astype(int) / np.sum(x[x == 7])
array([], dtype=float64)

>>> count = np.bincount(x[x == 7])
>>> count[count > 0]
array([], dtype=int32)

I'm slightly in favor of returning an empty array rather than
array([0]) as Keith got it.

Josef

> David
> _______________________________________________
> NumPy-Discussion mailing list
> NumPy-Discussion <at> scipy.org
> http://mail.scipy.org/mailman/listinfo/numpy-discussion
>
David Cournapeau | 2 Feb 05:36
Picon

Re: np.bincount raises MemoryError when given an empty array

On Tue, Feb 2, 2010 at 1:05 PM,  <josef.pktd <at> gmail.com> wrote:

> I think this could be considered as a correct answer, the count of any
> integer is zero.

Maybe, but this shape is random - it would be different in different
conditions, as the length of the returned array is just some random
memory location.

>
> Returning an array with one zero, or the empty array or raising an
> exception? I don't see much of a pattern

Since there is no obvious solution, the only rationale for not raising
an exception  I could see is to accommodate often-encountered special
cases. I find returning [0] more confusing than returning empty
arrays, though - maybe there is a usecase I don't know about.

cheers,

David
Charles R Harris | 2 Feb 05:45
Picon

Re: np.bincount raises MemoryError when given an empty array



On Mon, Feb 1, 2010 at 9:36 PM, David Cournapeau <cournape <at> gmail.com> wrote:
On Tue, Feb 2, 2010 at 1:05 PM,  <josef.pktd <at> gmail.com> wrote:

> I think this could be considered as a correct answer, the count of any
> integer is zero.

Maybe, but this shape is random - it would be different in different
conditions, as the length of the returned array is just some random
memory location.

>
> Returning an array with one zero, or the empty array or raising an
> exception? I don't see much of a pattern

Since there is no obvious solution, the only rationale for not raising
an exception  I could see is to accommodate often-encountered special
cases. I find returning [0] more confusing than returning empty
arrays, though - maybe there is a usecase I don't know about.


In this case I would expect an empty input to be a programming error and raising an error to be the right thing.

Chuck

_______________________________________________
NumPy-Discussion mailing list
NumPy-Discussion <at> scipy.org
http://mail.scipy.org/mailman/listinfo/numpy-discussion
josef.pktd | 2 Feb 06:02
Picon

Re: np.bincount raises MemoryError when given an empty array

On Mon, Feb 1, 2010 at 11:45 PM, Charles R Harris
<charlesr.harris <at> gmail.com> wrote:
>
>
> On Mon, Feb 1, 2010 at 9:36 PM, David Cournapeau <cournape <at> gmail.com> wrote:
>>
>> On Tue, Feb 2, 2010 at 1:05 PM,  <josef.pktd <at> gmail.com> wrote:
>>
>> > I think this could be considered as a correct answer, the count of any
>> > integer is zero.
>>
>> Maybe, but this shape is random - it would be different in different
>> conditions, as the length of the returned array is just some random
>> memory location.
>>
>> >
>> > Returning an array with one zero, or the empty array or raising an
>> > exception? I don't see much of a pattern
>>
>> Since there is no obvious solution, the only rationale for not raising
>> an exception  I could see is to accommodate often-encountered special
>> cases. I find returning [0] more confusing than returning empty
>> arrays, though - maybe there is a usecase I don't know about.
>>
>
> In this case I would expect an empty input to be a programming error and
> raising an error to be the right thing.

Not necessarily, if you run the bincount over groups in a dataset and
your not sure if every group is actually observed. The main question,
is whether the user needs or wants to check for empty groups before or
after the loop over bincount.

Like
>>> np.sum([])
0.0
>>> sum([])
0
the empty array or the array([0]) can be considered as the default
argument. In this case it is not really a programming error.

Since bincount usually returns redundant zero count unless
np.unique(data) = np.arange(data.max()+1),
array([0]) would also make sense as a minimum answer
>>> np.bincount([7,8,9])
array([0, 0, 0, 0, 0, 0, 0, 1, 1, 1])

I use bincount quite a lot but only with fixed sized arrays, so I
never actually used it in this way (yet).

Josef

>
> Chuck
>
>
> _______________________________________________
> NumPy-Discussion mailing list
> NumPy-Discussion <at> scipy.org
> http://mail.scipy.org/mailman/listinfo/numpy-discussion
>
>

Gmane