0

I'd like to combine two list and after that convert to ndarray consist of numpy.void. Does anyone tell me how can I do that

code

    observed_time=[6,5,1,3,4,3,2,4,5,2]
    censoring=[0,0,1,1,1,1,1,1,0,1]
l=[(False,6),(False,5),(True,1),(True,3)
l=np.ndarray(l)

But it doesn't work!

I want to convert array like below

array([( True,  72.), ( True, 411.), ( True, 228.), ( True, 126.),
       ( True, 118.), ( True,  10.), ( True,  82.), ( True, 110.),
       ( True, 314.), (False, 100.), ( True,  42.), ( True,   8.),
       ( True, 144.), (False,  25.), ( True,  11.), ( True,  30.),
       ( True, 384.), ( True,   4.), ( True,  54.), ( True,  13.),
       (False, 123.), (False,  97.), ( True, 153.), ( True,  59.),
       ( True, 117.), ( True,  16.), ( True, 151.), ( True,  22.),
       ( True,  56.), ( True,  21.), ( True,  18.), ( True, 139.),
       ( True,  20.), ( True,  31.), ( True,  52.), ( True, 287.),
       ( True,  18.), ( True,  51.), ( True, 122.), ( True,  27.),
       ( True,  54.), ( True,   7.), ( True,  63.), ( True, 392.),
       ( True,  10.), ( True,   8.), ( True,  92.), ( True,  35.),
       ( True, 117.), ( True, 132.), ( True,  12.), ( True, 162.),
       ( True,   3.), ( True,  95.), ( True, 177.), ( True, 162.),
       ( True, 216.), ( True, 553.), ( True, 278.), ( True,  12.),
       ( True, 260.), ( True, 200.), ( True, 156.), (False, 182.),
       ( True, 143.), ( True, 105.), ( True, 103.), ( True, 250.),
       ( True, 100.), ( True, 999.), ( True, 112.), (False,  87.),
       (False, 231.), ( True, 242.), ( True, 991.), ( True, 111.),
       ( True,   1.), ( True, 587.), ( True, 389.), ( True,  33.),
       ( True,  25.), ( True, 357.), ( True, 467.), ( True, 201.),
       ( True,   1.), ( True,  30.), ( True,  44.), ( True, 283.),
       ( True,  15.), ( True,  25.), (False, 103.), ( True,  21.),
       ( True,  13.), ( True,  87.), ( True,   2.), ( True,  20.),
       ( True,   7.), ( True,  24.), ( True,  99.), ( True,   8.),
       ( True,  99.), ( True,  61.), ( True,  25.), ( True,  95.),
       ( True,  80.), ( True,  51.), ( True,  29.), ( True,  24.),
       ( True,  18.), (False,  83.), ( True,  31.), ( True,  51.),
       ( True,  90.), ( True,  52.), ( True,  73.), ( True,   8.),
       ( True,  36.), ( True,  48.), ( True,   7.), ( True, 140.),
       ( True, 186.), ( True,  84.), ( True,  19.), ( True,  45.),
       ( True,  80.), ( True,  52.), ( True, 164.), ( True,  19.),
       ( True,  53.), ( True,  15.), ( True,  43.), ( True, 340.),
       ( True, 133.), ( True, 111.), ( True, 231.), ( True, 378.),
       ( True,  49.)],
      dtype=[('Status', '?'), ('Survival_in_days', '<f8')])
Reza
  • 35
  • 4
  • 2
    what have you tried so far ? show us a piece of sample code – TheEagle Jan 29 '21 at 20:33
  • 3
    https://stackoverflow.com/questions/65947921/changing-the-dtype-of-array shows a couple of ways of creating structured arrays. But I don't see any connection between the 2 lists and the desired array. – hpaulj Jan 29 '21 at 20:39
  • It is unclear what you want. Could you please elaborate on your input and desired output? – Ehsan Jan 29 '21 at 20:47
  • how can I edit my code? – Reza Jan 29 '21 at 20:55

1 Answers1

0

With a list of tuples it is easy to create a structured array:

In [253]: l=[(False,6),(False,5),(True,1),(True,3)]
In [254]: dt=np.dtype([('Status', '?'), ('Survival_in_days', '<f8')])
In [255]: np.array(l, dtype=dt)
Out[255]: 
array([(False, 6.), (False, 5.), ( True, 1.), ( True, 3.)],
      dtype=[('Status', '?'), ('Survival_in_days', '<f8')])
hpaulj
  • 221,503
  • 14
  • 230
  • 353