Numpy: Dtype = int рдХреЗ рд╕рд╛рде рдЕрд░реЗрдВрдЬ рд╕реЗ рдЕрдирдкреЗрдХреНрд╖рд┐рдд рдЖрдЙрдЯрдкреБрдЯ

рдХреЛ рдирд┐рд░реНрдорд┐рдд 5 рдордИ 2020  ┬╖  5рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: numpy/numpy


[3] рдореЗрдВ: np.arange (-3, 0, 0.5, dtype = int)
рдмрд╛рд╣рд░ [3]: рд╕рд░рдгреА ([- 3, -2, -1, 0, 1, 2])

рдЦреИрд░, "1" рдФрд░ "2" рджреЗрдЦрдирд╛ рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдереЛрдбрд╝рд╛ рдЕрдкреНрд░рддреНрдпрд╛рд╢рд┐рдд рдерд╛ рдХреНрдпреЛрдВрдХрд┐ рджреЛрдиреЛрдВ рд╕рдВрдЦреНрдпрд╛рдПрдБ 0 рд╕реЗ рдереЛрдбрд╝реА рдмрдбрд╝реА рд╣реИрдВред

рдЖрдо рддреМрд░ рдкрд░, рдпрд╣ dtype = int рдХреЗ рдмрд┐рдирд╛ рдкрд░рд┐рдгрд╛рдо рд╣реИ:

In [2]: np.arange(-3, 0, 0.5)                                                  
Out[2]: array([-3. , -2.5, -2. , -1.5, -1. , -0.5])
and we should get this with dtype=int:
In [4]: np.arange(-3, 0, 0.5).astype(int)                                      
Out[4]: array([-3, -2, -2, -1, -1,  0])

рд╕рдВрдЦреНрдпрд╛рддреНрдордХ рдореИрдиреБрдЕрд▓ рдореЗрдВ рдХрд╣рд╛ рдЧрдпрд╛ рд╣реИ:
dtype: dtype
рдЖрдЙрдЯрдкреБрдЯ рд╕рд░рдгреА рдХрд╛ рдкреНрд░рдХрд╛рд░ред рдпрджрд┐ dtype рдирд╣реАрдВ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рддреЛ рдЕрдиреНрдп рдЗрдирдкреБрдЯ рддрд░реНрдХреЛрдВ рд╕реЗ рдбреЗрдЯрд╛ рдкреНрд░рдХрд╛рд░ рдХрд╛ рдЕрдиреБрдорд╛рди рд▓рдЧрд╛рдПрдВред

рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдпрд╣ рдХреЗрд╡рд▓ рдЙрддреНрдкрд╛рджрди рд╕рд░рдгреА, рд╕рд╣реА рдЕрд╕рд░ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП?

import numpy as np
print(np.arange(-3, 0, 0.5))
print(np.arange(-3, 0, 0.5, dtype=int))
print(np.arange(-3, 0, 0.5).astype(int))

рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢:

рдХреЛрдИ рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢ рдирд╣реАрдВ ...

Numpy / рдкрд╛рдпрдерди рд╕рдВрд╕реНрдХрд░рдг рдЬрд╛рдирдХрд╛рд░реА:

рд╣рдордиреЗ рдЗрд╕реЗ рд╕рдВрдЦреНрдпрд╛рддреНрдордХ '1.18.4' (рд╢реБрджреНрдз рдкрд╛рдпрдерди 3.7.6) рдХреЗ рд╕рд╛рде-рд╕рд╛рде '1.18.1' (рдирд╡реАрдирддрдо рдЕрдкрдбреЗрдЯ рдХреЗ рд╕рд╛рде рдПрдирд╛рдХреЛрдВрдбрд╛ 3.7) рдХреЗ рддрд╣рдд рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛ред рдПрдХ рд╣реА рдкрд░рд┐рдгрд╛рдоред

1.18.4 3.7.6 (рдбрд┐рдлрд╝реЙрд▓реНрдЯ, 28 рдлрд░рд╡рд░реА 2020, 15:25:38)
[рдХреНрд▓реИрдЧ 11.0.0 ( https://github.com/llvm/llvm-project.git eefbff0082c5228e01611f7

1.18.1 3.7.4 (рдбрд┐рдлрд╝реЙрд▓реНрдЯ, рдЕрдЧрд╕реНрдд 13 2019, 20:35:49)
[рдЬреАрд╕реАрд╕реА 7.3.рей.реж]

00 - Bug numpy.core

рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА

"рд╕реНрдЯреЙрдк" рд╕реЗ рдмрдбрд╝реЗ рдореВрд▓реНрдп рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЕрдЪреНрдЫрд╛ рдирд╣реАрдВ рд╣реИ рдФрд░ рдереЛрдбрд╝рд╛ рдЕрдкреНрд░рддреНрдпрд╛рд╢рд┐рдд рд╣реИред рдпрджрд┐ рд╡реНрдпрд╡рд╕реНрдерд╛ рдлреНрд▓реЛрдЯ рдХреЗ рд▓рд┐рдП рдирд╣реАрдВ рд╣реИ, рддреЛ рдЖрдк рдлреНрд▓реЛрдЯреА рд╕реБрдиреНрди рдкреНрд░рдХрд╛рд░ рдХреА рдЬрд╛рдВрдЪ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдПрдХ рдЕрдкрд╡рд╛рдж рдмрдврд╝рд╛ рд╕рдХрддреЗ рд╣реИрдВред

рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛ dtype рдХреЗ рд▓рд┐рдП рдореИрдиреНрдпреБрдЕрд▓ рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рдХреЗрд╡рд▓ рдЖрдЙрдЯрдкреБрдЯ рдХреЗ рдПрдХ astype (dtype) рд░реВрдкрд╛рдВрддрд░рдг рдЬреИрд╕реА рдХреБрдЫ рдХреА рдЙрдореНрдореАрдж рдХрд░рддреА рд╣реИред

рдХреИрд╕рд╛ рд░рд╣реЗрдЧрд╛:
1.) рдЧреИрд░-рдкреВрд░реНрдгрд╛рдВрдХ рддрд░реНрдХреЛрдВ рдХреЗ рд▓рд┐рдП рдЕрдкрд╡рд╛рдж (рдЕрд░реНрдерд╛рдд рдкреНрд░рд╛рд░рдВрдн, рд░реЛрдХ, рдЪрд░рдг)ред
2.) рдЬрд╛рдБрдЪ рдХрд░реЗрдВ рдХрд┐ рдХреНрдпрд╛ рд░реЛрдХреЗрдВ = = рд╢реБрд░реВ рдХрд░реЗрдВ, рдЕрдиреНрдпрдерд╛ рдПрдХ рдЕрдкрд╡рд╛рдж рдмрдврд╝рд╛рдПрдВ
3.) рдлрдВрдХреНрд╢рди рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ рдЗрдВрдЯреЗрдХ рдХреЛ рд░реЛрдХрдирд╛, рд░реЛрдХрдирд╛, рдХрджрдо рд░рдЦрдирд╛ред
4.) astype (dtype) рдЖрдЙрдЯрдкреБрдЯ

1. рдХреЗ рдмрдЬрд╛рдп) рдпрджрд┐ рдЖрдк рдПрдХ рдЧреИрд░-рдкреВрд░реНрдгрд╛рдВрдХ рдЗрдирдкреБрдЯ рдкрд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдЖрдк рдЕрд░реЗрдВрдЬ рдХреЗ рдЕрдВрджрд░ рд▓рд┐рдиреНрд╕реНрдкреЗрд╕ рдХреЛ рд░реАрдбрд╛рдпрд░реЗрдХреНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рд╕рднреА 5 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

рдЗрд╕ рддрд░рд╣ рд╕реЗ рдХреАрдбрд╝реЗ рдХреЛ рдмрд╛рд░-рдмрд╛рд░ рдмрддрд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╕рдордп рдХреЗ рд▓рд┐рдП рдЦреЛрдП рдЧрдП рдХрд╛рд░рдгреЛрдВ рдХреЗ рд▓рд┐рдП, рдореБрдЭреЗ рдкреВрд░рд╛ рд╡рд┐рд╢реНрд╡рд╛рд╕ рд╣реИ рдХрд┐ рдЕрд░реЗрдВрдЬрдореЗрдВрдЯ рдХрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рд╣реИ:

def arange(start, stop, step, dtype):
    n = (start - stop) // step

    # dtype.type is a cast
    step = dtype.type(start + step) - dtype.type(start)

    # now do what you expect
    return [start + step*i for i in range(n)]

рд╢рд╛рдпрдж рд╣рдореЗрдВ рдЙрд╕ рдЫрджреНрдо рдХреЛрдб рдХреЛ рдкреНрд░рд▓реЗрдЦрди рдореЗрдВ рдЬреЛрдбрд╝рдирд╛ рдЪрд╛рд╣рд┐рдП?

рд╣рд╛рдБ, рдпрд╣ рдХреЛрдб рд╕рд╣реА рд╣реИ ( n 100

arange рдХреЛ рдмрд╛рд░-рдмрд╛рд░ рдпрдХреАрдирди рдЯреВрдЯреА рд╣реБрдИ рдкрд░рд┐рднрд╛рд╖рд╛ рдХреЗ рд▓рд┐рдП рдирдлрд░рдд рд╣реИ, рд▓реЗрдХрд┐рди рдореИрдВ рдЗрд╕реЗ рд╕рдВрдмреЛрдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдмрд╣реБрдд рдЕрдЪреНрдЫреЗ рдкреНрд░рд╕реНрддрд╛рд╡ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдирд╣реАрдВ рд╕реЛрдЪ рд╕рдХрддрд╛ (рд╣рд╛рд▓рд╛рдВрдХрд┐ рд╢рд╛рдпрдж рдПрдХ рдкрд╣рд▓реЗ рдЖрдпрд╛ рдерд╛)ред
рдЗрд╕рдХреА рддрд░рд╣ рдирд╣реАрдВ рдХрд┐ рд╣рдо arange рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рддреИрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрджрд▓ рд╕рдХрддреЗ рд╣реИрдВ (рд╢рд╛рдпрдж рд╕рдЯреАрдХ рдлрд╝рд┐рдХреНрд╕рдЕрдк, рд▓реЗрдХрд┐рди рдЕрдВрдд-рдмрд┐рдВрджреБ рдкрд░рд┐рд╡рд░реНрддрди рдХреЛрдИ рдЕрдЪреНрдЫрд╛ рдЖрдИрдПрдордУ рдирд╣реАрдВ рд╣реИ)ред рдЗрд╕рд▓рд┐рдП рд╣рдореЗрдВ рдПрдХ рдирдпрд╛ рдлрд╝рдВрдХреНрд╢рди рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА ... рд▓реЗрдХрд┐рди рддрдм рдЬреНрдпрд╛рджрд╛рддрд░ рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдпрд╣ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ linspace "рд╕рд╣реА" рдлреНрд▓реЛрдЯ рдЕрд░реЗрдВрдЬрдореЗрдВрдЯ рд╕реЗ рдмреЗрд╣рддрд░ рд╣реИ, рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдПрдХ рд╕рд╣реА рдлреНрд▓реЛрдЯ-рдЕрд░реЗрдВрдЬ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╣реИ рдмрд╣реБрдд рд╕рд╛рд░реЗ рдЙрдкрдпреЛрдЧ-рдорд╛рдорд▓реЗред

рдЕрдВрдд рдореЗрдВ, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдореИрдВ рдПрдХ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рд╕реЛрдЪрд╛ рдкреНрд░рд╕реНрддрд╛рд╡ рдХрд░рдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛: / ...

"рд╕реНрдЯреЙрдк" рд╕реЗ рдмрдбрд╝реЗ рдореВрд▓реНрдп рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЕрдЪреНрдЫрд╛ рдирд╣реАрдВ рд╣реИ рдФрд░ рдереЛрдбрд╝рд╛ рдЕрдкреНрд░рддреНрдпрд╛рд╢рд┐рдд рд╣реИред рдпрджрд┐ рд╡реНрдпрд╡рд╕реНрдерд╛ рдлреНрд▓реЛрдЯ рдХреЗ рд▓рд┐рдП рдирд╣реАрдВ рд╣реИ, рддреЛ рдЖрдк рдлреНрд▓реЛрдЯреА рд╕реБрдиреНрди рдкреНрд░рдХрд╛рд░ рдХреА рдЬрд╛рдВрдЪ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдПрдХ рдЕрдкрд╡рд╛рдж рдмрдврд╝рд╛ рд╕рдХрддреЗ рд╣реИрдВред

рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛ dtype рдХреЗ рд▓рд┐рдП рдореИрдиреНрдпреБрдЕрд▓ рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рдХреЗрд╡рд▓ рдЖрдЙрдЯрдкреБрдЯ рдХреЗ рдПрдХ astype (dtype) рд░реВрдкрд╛рдВрддрд░рдг рдЬреИрд╕реА рдХреБрдЫ рдХреА рдЙрдореНрдореАрдж рдХрд░рддреА рд╣реИред

рдХреИрд╕рд╛ рд░рд╣реЗрдЧрд╛:
1.) рдЧреИрд░-рдкреВрд░реНрдгрд╛рдВрдХ рддрд░реНрдХреЛрдВ рдХреЗ рд▓рд┐рдП рдЕрдкрд╡рд╛рдж (рдЕрд░реНрдерд╛рдд рдкреНрд░рд╛рд░рдВрдн, рд░реЛрдХ, рдЪрд░рдг)ред
2.) рдЬрд╛рдБрдЪ рдХрд░реЗрдВ рдХрд┐ рдХреНрдпрд╛ рд░реЛрдХреЗрдВ = = рд╢реБрд░реВ рдХрд░реЗрдВ, рдЕрдиреНрдпрдерд╛ рдПрдХ рдЕрдкрд╡рд╛рдж рдмрдврд╝рд╛рдПрдВ
3.) рдлрдВрдХреНрд╢рди рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ рдЗрдВрдЯреЗрдХ рдХреЛ рд░реЛрдХрдирд╛, рд░реЛрдХрдирд╛, рдХрджрдо рд░рдЦрдирд╛ред
4.) astype (dtype) рдЖрдЙрдЯрдкреБрдЯ

1. рдХреЗ рдмрдЬрд╛рдп) рдпрджрд┐ рдЖрдк рдПрдХ рдЧреИрд░-рдкреВрд░реНрдгрд╛рдВрдХ рдЗрдирдкреБрдЯ рдкрд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдЖрдк рдЕрд░реЗрдВрдЬ рдХреЗ рдЕрдВрджрд░ рд▓рд┐рдиреНрд╕реНрдкреЗрд╕ рдХреЛ рд░реАрдбрд╛рдпрд░реЗрдХреНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рд╣реЗ рдореИрдВ рд╕реНрд░реЛрдд рдпреЛрдЧрджрд╛рди рдХреЛ рдЦреЛрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреВрд░реНрдг рд╢реБрд░реБрдЖрдд рд╣реВрдВред рдЗрд╕реЗ рдПрдХ рдХреЛрд╢рд┐рд╢ рджреЗрдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪрд╛ред рдЗрд╕ рд╕реНрдирд┐рдкреЗрдЯ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреИрд╕реЗ? @ Eric-Wieser

x = []
for i in range(start, stop):
    x.append(i)
    x.append(i+step)
print(np.array(x, dtype))

рдЗрд╕ рддрд░рд╣ рд╕реЗ рдХреАрдбрд╝реЗ рдХреЛ рдмрд╛рд░-рдмрд╛рд░ рдмрддрд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╕рдордп рдХреЗ рд▓рд┐рдП рдЦреЛрдП рдЧрдП рдХрд╛рд░рдгреЛрдВ рдХреЗ рд▓рд┐рдП, рдореБрдЭреЗ рдкреВрд░рд╛ рд╡рд┐рд╢реНрд╡рд╛рд╕ рд╣реИ рдХрд┐ рдЕрд░реЗрдВрдЬрдореЗрдВрдЯ рдХрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рд╣реИ:

def arange(start, stop, step, dtype):
    n = (start - stop) // step

    # dtype.type is a cast
    step = dtype.type(start + step) - dtype.type(start)

    # now do what you expect
    return [start + step*i for i in range(n)]
рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕