結論: numpy ではちゃんとオーバーフローのめんどうを見ましょう
np.__version__ == '1.23.4'- 表は index * column の計算結果
- スカラーと
ndarrayで挙動が違う - オーバーフローしたときの
RuntimeWarningはスカラー同士の時にしか出ない -
numpy.result_type の結果が計算結果の
dtype、足し算と掛け算で同じ型を使っているため最悪死ぬ
| = i * j | 255 | np.uint8(255) | np.uint8([255]) | 257 | np.uint16(257) | np.uint16([257]) | 258 | np.uint16(258) | np.uint16([258]) |
|---|---|---|---|---|---|---|---|---|---|
| 255 | 65025 int |
65025 np.int32 |
[1] np.ndarray(np.uint8) |
65535 int |
65535 np.int32 |
[65535] np.ndarray(np.uint16) |
65790 int |
65790 np.int32 |
[254] np.ndarray(np.uint16) |
| np.uint8(255) | 65025 np.int32 |
1 np.uint8 |
[1] np.ndarray(np.uint8) |
65535 np.int32 |
65535 np.uint16 |
[65535] np.ndarray(np.uint16) |
65790 np.int32 |
254 np.uint16 |
[254] np.ndarray(np.uint16) |
| np.uint8([255]) | [1] np.ndarray(np.uint8) |
[1] np.ndarray(np.uint8) |
[1] np.ndarray(np.uint8) |
[65535] np.ndarray(np.uint16) |
[65535] np.ndarray(np.uint16) |
[65535] np.ndarray(np.uint16) |
[254] np.ndarray(np.uint16) |
[254] np.ndarray(np.uint16) |
[254] np.ndarray(np.uint16) |