объединение двух numpy массивов разного типа d в ​​структурированный массив - PullRequest
4 голосов
/ 17 февраля 2020

У меня есть массив numpy float и массив int одинаковой длины. Я хотел бы объединить их так, чтобы выходные данные имели составной dtype (float, int). column_stack Объединение их вместе приводит к массиву float64:

import numpy

a = numpy.random.rand(5)
b = numpy.random.randint(0, 100, 5)

ab = numpy.column_stack([a, b])
print(ab.dtype)
float64

Есть какие-нибудь подсказки?

1 Ответ

2 голосов
/ 18 февраля 2020

Создайте «пустой» массив:

In [391]: dt = np.dtype('f,i')                                                                 
In [392]: arr = np.zeros(5, dtype=dt)                                                          
In [393]: arr                                                                                  
Out[393]: 
array([(0., 0), (0., 0), (0., 0), (0., 0), (0., 0)],
      dtype=[('f0', '<f4'), ('f1', '<i4')])

заполните его:

In [394]: arr['f0']=np.random.rand(5)                                                          
In [396]: arr['f1']=np.random.randint(0,100,5)                                                 
In [397]: arr                                                                                  
Out[397]: 
array([(0.40140057, 75), (0.93731374, 99), (0.6226782 , 48),
       (0.01068745, 68), (0.19197434, 53)],
      dtype=[('f0', '<f4'), ('f1', '<i4')])

Есть и другие функции, которые можно использовать, но это полезно знать (и понимать) этот базис c подход.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...