Я заметил следующее поведение, демонстрируемое массивами numpy:
>>> import numpy as np
>>> s = {1,2,3}
>>> l = [1,2,3]
>>> np.array(l)
array([1, 2, 3])
>>> np.array(s)
array({1, 2, 3}, dtype=object)
>>> np.array(l, dtype='int')
array([1, 2, 3])
>>> np.array(l, dtype='int').dtype
dtype('int64')
>>> np.array(s, dtype='int')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: int() argument must be a string, a bytes-like object or a number, not 'set'
Есть две вещи, на которые следует обратить внимание:
- Создание массива из набора приводит к массиву
dtype
будучи object
- Попытка указать dtype приводит к ошибке, которая предполагает, что набор обрабатывается как отдельный элемент, а не как итеративный.
Чего мне не хватает -Я не до конца понимаю, какой кусок питона я пропускаю. Set является изменяемым объектом, очень похожим на список.
РЕДАКТИРОВАТЬ: кортежи работают нормально:
>>> t = (1,2,3)
>>> np.array(t)
array([1, 2, 3])
>>> np.array(t).dtype
dtype('int64')