Что такое «скаляр» в 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 
  • Scipy map_ согласовывает билинейную интерполяцию по сравнению с интерполяцией интерполяции и интерполяции IDL
  • Как узнать собственные векторы, соответствующие конкретному собственному значению матрицы?
  • Как получить значение из переменной тензора anano, поддерживаемой общей переменной?
  • Эффективно вычитает вектор из матрицы (Scipy)
  • Изменение форм данных в пандах на основе меток столбцов
  • Игнорирование значений -Inf в массивах с использованием numpy / scipy в Python
  • данные биннинга в python с scipy / numpy
  • Как получить аргументы параметров из замороженного дистрибутива spicy.stats?
  • Имеет ли scipy.interpolate.interp1d проблемы с десятичными значениями, ведущими значения x?
  • Может ли Python выполнять векторизованные операции?
  • Как распараллеливать разреженное матричное умножение Scipy
  • Python - лучший язык программирования в мире.