Я знаю, что это очень классический вопрос, но после прохождения многих сообщений я решил вернуть его, не имея возможности найти элегантное решение для чего-то вроде основного. Проблема:Из словаря счетчика python в массив nd numpy
У меня есть словарь счетчика из большого набора данных, с содержательными целыми ключами, и целые вхождения:
co = Counter({8046: 1360, 10046: 1248, 11046: 1024})
И я просто хочу закончить с базовым целым массивом:
a = np.array([[8046,1360],[10046,1248],[11046,1024]])
специфика этой проблемы (или отсутствие специфичности) является то, что у меня есть целые ключи, и я не нужен структурированный массив. Следующий
dtype = dict(names = ['id','data'], formats=['i8','i8'])
array = np.fromiter(iter(co.items()), dtype=dtype)
не вполне удовлетворительна, в конечном итоге с
a = [(8046, 1360) (10046, 1248) (11046, 1024)]
Является ли это просто вопрос DTYPE? Большое спасибо!
Да! Я потерял себя в этих типах и итераторах, забыв об основах. Поэтому комбинация np.array (list()) позволяет нам указывать типы dtypes. Теперь я блуждаю, почему «np.fromiter» настолько жестко об этом, но, я думаю, я просто что-то пропустил. Спасибо @kennytm. – Etienne
Если я не ошибаюсь, вместо 'list (co.items())' должно быть достаточно простого 'co.items()'. – JRodDynamite
@JRodDynamite 'np.array (co.items())' создает массив объектов вместо 2D-массива. 'array (dict_items ([(8046, 1360), (10046, 1248), (11046, 1024)]), dtype = object)' – kennytm