Am Sa., 25. Dez. 2021 um 10:03 Uhr schrieb Lev Maximov <[email protected]>:
>
> https://axil.github.io/numpy-data-types.html
> Speaking of zero-dimensional arrays more realistic example where you can run
> into them is when you iterate over a numpy array with nditer:
There seems to be missing an "a" before "more".
Overflow warning: Instead of
>>> np.array([2**63–1])[0] + 1
FloatingPointError: overflow encountered in longlong_scalars
on my machine it runs::
>>> numpy.array([2 ** 63 - 1])[0] + 1
<stdin>:1: RuntimeWarning: overflow encountered in long_scalars
There are also some more significant unclarities remaining:
1. The RuntimeWarning is issued *only once*:
>>> b = numpy.array([2 ** 63 - 1])[0]
>>> b + 1
<stdin>:1: RuntimeWarning: overflow encountered in long_scalars
-9223372036854775808
>>> b + 1
-9223372036854775808
2. And I do not get the the difference here:
>>> a = numpy.array(2 ** 63 - 1)
>>> b = numpy.array([2 ** 63 - 1])[0]
>>> a.dtype, a.shape
(dtype('int64'), ())
>>> b.dtype, b.shape
(dtype('int64'), ())
>>> with numpy.errstate(over='raise'):
... a + 1
...
-9223372036854775808
>>> with numpy.errstate(over='raise'):
... b + 1
...
Traceback (most recent call last):
File "<stdin>", line 2, in <module>
FloatingPointError: overflow encountered in long_scalars
The only apparent difference I can get hold of is that:
>>> a[()] = 0
>>> a
array(0)
but:
>>> b[()] = 0
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: 'numpy.int64' object does not support item assignment
While writing this down I realise that *a* is a zero-dimensional
array, while *b* is an int64 scalar. This can also be seen from the
beginning:
>>> a
array(9223372036854775807)
>>> b
9223372036854775807
So, unclarity resolved, but maybe I am not the only one stumbling over this.
Maybe the idiom ``>>> c = numpy.int64(2 ** 63 - 1)`` can be used? I
never used this, so I am unsure about the exact semantics of such a
statement.
I am stopping studying your document here. Might be that I continue later.
Friedrich
_______________________________________________
NumPy-Discussion mailing list -- [email protected]
To unsubscribe send an email to [email protected]
https://mail.python.org/mailman3/lists/numpy-discussion.python.org/
Member address: [email protected]