Разница между numpy.arr(()) и numpy.arr([])

При вызове numpy.array двумя способами:

>>> np.array((1,2,3,4))
array([1, 2, 3, 4])
>>> np.array([1,2,3,4])
array([1, 2, 3, 4])

Я заметил, что он возвращает два, казалось бы, идентичных ndarrays. Оба эти ndarray идентичны? Почему?


person Marlon Calvo    schedule 11.02.2020    source источник
comment
Да, они читают оба из итерации, которая дает одинаковые числа.   -  person Willem Van Onsem    schedule 12.02.2020
comment
Список и кортежи на самом деле не отличаются данными, которые они несут. Они отличаются только функциями, которые они поддерживают. Единственная функция, используемая в вашем коде, — это получение последовательности элементов, и она поддерживается обоими.   -  person Klaus D.    schedule 12.02.2020
comment
При создании такого базового массива numpy они одинаковы. При использовании compound dtype (для создания массива structured) они имеют разные значения. См., например, мой недавний ответ: > stackoverflow.com/questions/60174899/   -  person hpaulj    schedule 12.02.2020


Ответы (1)


Здесь мы можем вести себя как обычно. Предположим, мы не знаем, что такое X = np.array([1,2,3,4]) и Y = np.array((1,2,3,4)). Если мы напечатаем его, мы увидим вывод, который является результатом секретных встроенных методов X.__repr__ и Y.__repr__. Здесь вы можете убедиться, что и X, и Y имеют одинаковые представления. Однако это не означает, что они одинаковы, потому что они могут быть экземплярами разных классов с одними и теми же представлениями. Чтобы быть уверенным, я обычно использую X.__class__ и Y.__class__. Таким образом, и X, и Y являются экземплярами одного и того же класса np.ndarray.

person mathfux    schedule 11.02.2020