Что такое «скаляр» в numpy?

В документации указывается назначение скаляров, например, тот факт, что обычные числа Python, такие как float и integer, являются слишком примитивными, поэтому необходимы более сложные типы данных.

В нем также указаны определенные типы скаляров (иерархия типов данных); а также пару атрибутов скаляра.
Но он никогда не дает конкретного определения того, что скаляр в контексте Python.

Я хочу разобраться в этом. Поэтому мой вопрос в возможно более простых выражениях объясняет мне, что такое пифонический скаляр.

3 Solutions collect form web for “Что такое «скаляр» в numpy?”

Скаляр NumPy – это любой объект, являющийся экземпляром np.generic или type которого находится в np.ScalarType :

 In [12]: np.ScalarType Out[13]: (int, float, complex, long, bool, str, unicode, buffer, numpy.int16, numpy.float16, numpy.int8, numpy.uint64, numpy.complex192, numpy.void, numpy.uint32, numpy.complex128, numpy.unicode_, numpy.uint32, numpy.complex64, numpy.string_, numpy.uint16, numpy.timedelta64, numpy.bool_, numpy.uint8, numpy.datetime64, numpy.object_, numpy.int64, numpy.float96, numpy.int32, numpy.float64, numpy.int32, numpy.float32) 

Это определение относится к исходному коду для np.isscalar :

 def isscalar(num): if isinstance(num, generic): return True else: return type(num) in ScalarType 

Обратите внимание, что вы можете проверить, является ли что-то скаляром, используя np.isscalar :

 >>> np.isscalar(3.1) True >>> np.isscalar([3.1]) False >>> np.isscalar(False) True 

Откуда мы знаем, что знаем? Мне нравится узнать, как люди знают то, что знают – больше, чем сами ответы. Поэтому позвольте мне попытаться объяснить, откуда взялся ответ.

Наличие правильных инструментов поможет вам разобраться в подобных вещах для себя.

Я нашел это, используя IPython . Используя функцию завершения TAB, введите

 In [19]: import numpy as np In [20]: np.[TAB] 

заставляет IPython отображать все переменные в пространстве имен np модулей. Поиск строки "scalar" np.ScalarType "scalar" приведет вас к np.ScalarType и np.isscalar . Typing

 In [20]: np.isscalar? 

(отметьте вопросительный знак в конце) предложит IPython показать вам, где определен np.isscalar :

 File: /data1/unutbu/.virtualenvs/dev/lib/python2.7/site-packages/numpy/core/numeric.py 

как я понял определение isscalar . В качестве альтернативы, документация numpy для isscalar имеет ссылку на исходный код.

В этом контексте скаляр является одной из вещей, которые вы помещаете в массив. Например, один 64-битный float или 32-битный int, а не целый массив из них.

Просто не-векторы. numpy пытается проанализировать его векторы на единичные числа (а именно сканеры python) при передаче в качестве аргументов и сбой, если длина вектора не равна 1 :

 In [44]: float(a) --------------------------------------------------------------------------- TypeError Traceback (most recent call last) <ipython-input-44-93d25633ffc4> in <module>() ----> 1 float(a) TypeError: only length-1 arrays can be converted to Python scalars 
  • Осциллирующее рассеянное матричное вырождение: a ** 16 медленнее, чем a * a * a * a * a * a * a * a * a * a * a * a * a * a * a * a?
  • Расчет площадей между двумя кривыми
  • Исключительная интерполяция с замаскированными данными?
  • SciPy LeastSq Хороший оценщик
  • Многолинейная регрессия Python с использованием кода OLS с конкретными данными?
  • не может изменить шрифт на Helvetica в Matplotlib в Python на Mac OS X 10.6
  • Создает ли anaconda отдельную переменную PYTHONPATH для каждой новой среды?
  • Если матрица обратима над конечным полем
  •  
    Interesting Posts for Van-Lav
    Python - лучший язык программирования в мире.