Numpy: рд╕рдорд╡рд░реНрддреА рд╕рдВрд░рдЪрд┐рдд рд╕рд░рдгрд┐рдпреЛрдВ (рд╡рд┐рднрд╛рдЬрди рджреЛрд╖) рдХреЗ рд╕рд╛рде рд╕рдорд╕реНрдпрд╛ (Trac # 2084)

рдХреЛ рдирд┐рд░реНрдорд┐рдд 20 рдЕрдХреНрддреВре░ 2012  ┬╖  7рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: numpy/numpy

2012-03-19 рдкрд░ @ рдСрд╕реНрдЯреНрд░рд┐рдлрд╝рд┐рдХ рдЯрд┐рдХрдЯ http://projects.scipy.org/numpy/ticket/2084 , @astrofrog рджреНрд╡рд╛рд░рд╛, рдЕрдЬреНрдЮрд╛рдд рдХреЛ рд╕реМрдВрдкрд╛ рдЧрдпрд╛

рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╕рдорд╕реНрдпрд╛ рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИ - рднрд▓реЗ рд╣реА рдиреЗрдореНрдкреА рдХреЛ рдкрддрд╛ рд╣реИ рдХрд┐ рдПрдХ рд╕рдВрд░рдЪрд┐рдд рд╕рд░рдгреА рдХреЗ рдХреНрд╖реЗрддреНрд░реЛрдВ рдХреЛ рдХреИрд╕реЗ рдмрджрд▓рдирд╛ рд╣реИ, рдЕрдЧрд░ рдпрд╣ рд╕рдВрд░рдЪрд┐рдд рд╕рд░рдгрд┐рдпреЛрдВ рдХреЛ рд╕реНрд╡рдпрдВ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддрд╛ рд╣реИ, рддреЛ рдпрд╣ рджреБрд░реНрдШрдЯрдирд╛рдЧреНрд░рд╕реНрдд рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ:

In [1]: import numpy as np

In [2]: d1 = np.array(zip(['a','b','c']), dtype=[('b', '|S1')])

In [3]: d2 = np.array(zip(['aa','bb','cc']), dtype=[('b', '|S2')])

In [4]: np.hstack([d1['b'],d2['b']])
Out[4]: 
array(['a', 'b', 'c', 'aa', 'bb', 'cc'], 
      dtype='|S2')

In [5]: np.hstack([d1, d2])
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
/Users/tom/<ipython-input-5-bd5cc420043d> in <module>()
----> 1 np.hstack([d1, d2])

/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/numpy/core/shape_base.pyc in hstack(tup)
    268 
    269     """
--> 270     return _nx.concatenate(map(atleast_1d,tup),1)
    271 

TypeError: invalid type promotion

рдПрдХ рд╕рдорд╛рди рдореБрджреНрджрд╛ рд╡рд┐рднрд┐рдиреНрди рдПрдВрдбрд┐рдпрди-рдиреЗрд╕ рдХреЗ рдлреНрд▓реЛрдЯрд┐рдВрдЧ-рдкреЙрдЗрдВрдЯ рдореВрд▓реНрдпреЛрдВ рдХреЗ рд╕рд╛рде рд╣реЛрддрд╛ рд╣реИ:

In [1]: import numpy as np

In [2]: d1 = np.array(zip([1,2,3]), dtype=[('a', '<f4')])

In [3]: d2 = np.array(zip([1,2,3]), dtype=[('a', '>f4')])

In [4]: np.hstack([d1['a'],d2['a']])
Out[4]: array([ 1.,  2.,  3.,  1.,  2.,  3.], dtype=float32)

In [5]: np.hstack([d1, d2])
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
/Users/tom/<ipython-input-5-bd5cc420043d> in <module>()
----> 1 np.hstack([d1, d2])

/Users/tom/Library/Python/2.7/lib/python/site-packages/numpy/core/shape_base.pyc in hstack(tup)
    271     # As a special case, dimension 0 of 1-dimensional arrays is "horizontal"
    272     if arrs[0].ndim == 1:
--> 273         return _nx.concatenate(arrs, 0)
    274     else:
    275         return _nx.concatenate(arrs, 1)

TypeError: invalid type promotion

рдХреБрдЫ рдорд╛рдорд▓реЛрдВ рдореЗрдВ, рдпрд╣ рд╡рд┐рднрд╛рдЬрди рджреЛрд╖ рднреА рдкреИрджрд╛ рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдореБрдЭреЗ рдЕрднреА рддрдХ рдЗрд╕реЗ рд▓рдЧрд╛рддрд╛рд░ рдкреБрди: рдкреЗрд╢ рдХрд░рдиреЗ рдХрд╛ рддрд░реАрдХрд╛ рдирд╣реАрдВ рдорд┐рд▓рд╛ рд╣реИред

00 - Bug numpy.core

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

@charris : рдХреЛрдИ рднреА рдореМрдХрд╛ рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдлрд┐рд░ рд╕реЗ рдЦреЛрд▓рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ? рдХрдо рд╕реЗ рдХрдо рдЙрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдЬрд╣рд╛рдВ рдлрд╝реАрд▓реНрдб рд╕рднреА рдирд╛рдореЛрдВ рдХрд╛ рдорд┐рд▓рд╛рди рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЙрд╕реА рдХреНрд░рдо рдореЗрдВ рд╣реЛрддрд╛ рд╣реИ, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд╣реИ рдХрд┐ рдкрд░рд┐рдгрд╛рдо рдореЗрдВ рдЗрд╕ рдХреНрд░рдо рдореЗрдВ рдЗрди рдлрд╝реАрд▓реНрдб рдХреЗ рдирд╛рдо рд╣реЛрдиреЗ рдЪрд╛рд╣рд┐рдП рдФрд░ рдкреНрд░рддреНрдпреЗрдХ рдлрд╝реАрд▓реНрдб рдХреЛ рд╕рдВрдмрдВрдзрд┐рдд рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЛ рдмрдврд╝рд╛рд╡рд╛ рджреЗрдиреЗ рдХреЗ рдкрд░рд┐рдгрд╛рдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред

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

_trac рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ lcampagn рдиреЗ 2012-09-24_ рдкрд░ рд▓рд┐рдЦрд╛

рдореИрдВ рдЗрд╕ рдмрдЧ рдХреА рдкреБрд╖реНрдЯрд┐ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ рдФрд░ рд╡рд┐рднрд╛рдЬрди рджреЛрд╖ рдХреЛ рдкреБрди: рдЙрддреНрдкрдиреНрди рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ:

>>> import numpy as np
>>> a = np.empty(1, dtype=[('x', object)])
>>> b = np.empty(1, dtype=[('x', float)])
>>> np.concatenate([a,b])
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: invalid type promotion
>>> np.concatenate([a,b])
Segmentation fault (core dumped)

рдореИрдВрдиреЗ рдХреБрдЫ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдореЗрдВ рдЗрд╕ рджреБрд░реНрдШрдЯрдирд╛ рдореЗрдВ рднрд╛рдЧ рд▓рд┐рдпрд╛ рд╣реИред
рдореИрдВ рд▓рд┐рдирдХреНрд╕ (1.6.1-6ubuntu1) рдФрд░ рд╡рд┐рдВрдбреЛрдЬ рдкрд░ рдЗрд╕ рджреБрд░реНрдШрдЯрдирд╛ рдХрд╛ рдХрд╛рд░рдг рдмрди рд╕рдХрддрд╛ рд╣реВрдВред
рдореИрдВ рдЙрдкрдпреЛрдЧреА рд╕реНрдЯреИрдХ рдирд┐рд╢рд╛рди рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдирд╣реАрдВ рд╣реВрдВ - рдпрд╣ рдкреНрд░рддреАрдд рд╣реЛрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдмрдЧ рдХреБрдЫ рд╕реНрдЯреИрдХ рднреНрд░рд╖реНрдЯрд╛рдЪрд╛рд░ рдХрд╛ рдХрд╛рд░рдг рдмрдирддрд╛ рд╣реИред

2012-09-24 рдХреЛ trac user lcampagn рджреНрд╡рд╛рд░рд╛ Issue with concatenating structured arrays рд╕реЗ Issue with concatenating structured arrays (segmentation fault) рд╢реАрд░реНрд╖рдХ рдмрджрд▓рд╛ рдЧрдпрд╛

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ numpy/core/src/multiarray/convert_datatype.c:1122 рдореЗрдВ TODO рдХреЗ рд╕рд╛рде рдХрд░рдирд╛ рд╣реИ:

/* TODO: Also combine fields, subarrays, strings, etc */

рдХрдо рд╕реЗ рдХрдо, рдЗрд╕ рдореБрджреНрджреЗ рдореЗрдВ рдпрд╣ рдЕрдВрддрд┐рдо рд╡рд┐рдлрд▓рддрд╛ рд╣реИред

рдореИрдВ segfault рдХреЛ рдкреБрди: рдкреЗрд╢ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдирд╣реАрдВ рд╣реВрдВред

рдореИрдВрдиреЗ рдпрд╣ рдорд╣рд╕реВрд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд░реВрдк рд╕реЗ рдЦреЛрджрд╛ рд╣реИ рдХрд┐ рдЕрдВрддрд┐рдо рдореБрджреНрджрд╛ рдпрд╣рд╛рдВ NumPy рдХреЛ рдордирдорд╛рдиреЗ рдврдВрдЧ рд╕реЗ рд╕рдВрд░рдЪрд┐рдд рд╕рд░рдгрд┐рдпреЛрдВ рдХреЛ рд╕рдВрдпреЛрдЬрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╣ рд░рд╣рд╛ рд╣реИ, рдпрд╣ рд╕реНрдЯреНрд░рд┐рдВрдЧреНрд╕ рдХреЛ рд╕рдВрдпреЛрдЬрд┐рдд рдХрд░рдиреЗ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рд╣реИред рдпрд╣ рдореБрджреНрджрд╛ рдПрдХ рдРрд╕реЗ рдорд╛рдорд▓реЗ рдХреЛ рдкреНрд░рд╕реНрддреБрдд рдХрд░рддрд╛ рд╣реИ рдЬрд╣рд╛рдВ рд╕рдВрдпреЛрдЬрди рдЖрдВрдЦ рдХреЗ рд▓рд┐рдП рд╕реНрдкрд╖реНрдЯ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдХреИрд╕реЗ NumPy рдХреЛ рдордирдорд╛рдиреЗ рдврдВрдЧ рд╕реЗ рд╕рдВрд░рдЪрд┐рдд рд╕рд░рдгрд┐рдпреЛрдВ рдХреЛ рдорд░реНрдЬ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП (рдорд╛рди рд▓реЗрдВ рдХрд┐ рд╕рдорд╛рди рдирд╛рдо рд╡рд╛рд▓реЗ рдлрд╝реАрд▓реНрдб рдХреЛ рд╕рдВрдпреБрдХреНрдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рд╣реИ? рдЬреЛ рд░рд╣рддрд╛ рд╣реИ рдЙрд╕рдХреЗ рд╕рдВрдШ рдХреЛ рд▓реЗ рдЬрд╛рдПрдВ?)ред

рдЪреВрдВрдХрд┐ рдореИрдВ рдЗрд╕ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рд▓рд┐рдП рдирдпрд╛ рд╣реВрдВ, рдЗрд╕рд▓рд┐рдП рдореИрдВ рдЗрд╕реЗ рдЕрднреА рдХреЗ рд▓рд┐рдП рдЦреБрд▓рд╛ рдЫреЛрдбрд╝ рджреВрдВрдЧрд╛, рдФрд░ рдЕрдкрдиреЗ рдкреНрд░рдпрд╛рд╕реЛрдВ рдХреЛ рдирд┐рд░реНрджреЗрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╣реАрдВ рдФрд░ рдЦреЛрдЬрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реВрдВрдЧрд╛ :-P

рдЦреИрд░, рдЗрд╕реЗ рд╕реЗрдЧрдлреЙрд▓реНрдЯ рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рдпрджрд┐ рдХреЛрдИ рдЪреАрдЬрд╝ рдирд┐рдХрд▓рддреА рд╣реИ рддреЛ рд╣рдореЗрдВ рдПрдХ рддреНрд░реБрдЯрд┐ рдЙрдард╛рдиреА рдЪрд╛рд╣рд┐рдПред

рд╣рд╛рдБ - рдпрд╣ рдЕрдм рдПрдХ рддреНрд░реБрдЯрд┐ рдЙрдард╛ рд░рд╣рд╛ рд╣реИред рдореИрдВ рдЗрд╕реЗ segfault рддрдХ рдирд╣реАрдВ рдкрд╣реБрдВрдЪрд╛ рд╕рдХрд╛ред

@charris : рдХреЛрдИ рднреА рдореМрдХрд╛ рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдлрд┐рд░ рд╕реЗ рдЦреЛрд▓рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ? рдХрдо рд╕реЗ рдХрдо рдЙрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдЬрд╣рд╛рдВ рдлрд╝реАрд▓реНрдб рд╕рднреА рдирд╛рдореЛрдВ рдХрд╛ рдорд┐рд▓рд╛рди рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЙрд╕реА рдХреНрд░рдо рдореЗрдВ рд╣реЛрддрд╛ рд╣реИ, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд╣реИ рдХрд┐ рдкрд░рд┐рдгрд╛рдо рдореЗрдВ рдЗрд╕ рдХреНрд░рдо рдореЗрдВ рдЗрди рдлрд╝реАрд▓реНрдб рдХреЗ рдирд╛рдо рд╣реЛрдиреЗ рдЪрд╛рд╣рд┐рдП рдФрд░ рдкреНрд░рддреНрдпреЗрдХ рдлрд╝реАрд▓реНрдб рдХреЛ рд╕рдВрдмрдВрдзрд┐рдд рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЛ рдмрдврд╝рд╛рд╡рд╛ рджреЗрдиреЗ рдХреЗ рдкрд░рд┐рдгрд╛рдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред

рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕

рд╕рдВрдмрдВрдзрд┐рдд рдореБрджреНрджреЛрдВ

perezpaya picture perezpaya  ┬╖  4рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

qualiaa picture qualiaa  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

dcsaba89 picture dcsaba89  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

dmvianna picture dmvianna  ┬╖  4рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

MorBilly picture MorBilly  ┬╖  4рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ