Читаем Язык программирования Python полностью

accumulate()Аккумулирование результата.
outer()Внешнее «произведение».
reduce()Сокращение.
reduceat()Сокращение в заданных точках.

Пример с функцией add() позволяет понять смысл универсальной функции и ее методов:

>>> from Numeric import add

>>> add([[1, 2], [3, 4]], [[1, 0], [0, 1]])

array([[2, 2],

       [3, 5]])

>>> add([[1, 2], [3, 4]], [1, 0])

array([[2, 2],

       [4, 4]])

>>> add([[1, 2], [3, 4]], 1)

array([[2, 3],

       [4, 5]])

>>> add.reduce([1, 2, 3, 4])        # т.е. 1+2+3+4

10

>>> add.reduce([[1, 2], [3, 4]], 0) # т.е. [1+3 2+4]

array([4, 6])

>>> add.reduce([[1, 2], [3, 4]], 1) # т.е. [1+2 3+4]

array([3, 7])

>>> add.accumulate([1, 2, 3, 4])    # т.е. [1 1+2 1+2+3 1+2+3+4]

array([ 1, 3, 6, 10])

>>> add.reduceat(range(10), [0, 3, 6]) # т.е. [0+1+2 3+4+5 6+7+8+9]

array([ 3, 12, 30])

>>> add.outer([1,2], [3,4])         # т.е. [[1+3 1+4] [2+3 2+4]]

array([[4, 5],

       [5, 6]])

Методы accumulate(), reduce() и reduceat() принимают необязательный аргумент — номер размерности, используемой для соответствующего действия. По умолчанию применяется нулевая размерность.

Универсальные функции, помимо одного или двух необходимых параметров, позволяют задавать и еще один аргумент, для приема результата функции. Тип третьего аргумента должен строго соответствовать типу результата. Например, функция sqrt() даже от целых чисел имеет тип Float.

>>> from Numeric import array, sqrt, Float

>>> a = array([0, 1, 2])

>>> r = array([0, 0, 0], Float)

>>> sqrt(a, r)

array([ 0. , 1. , 1.41421356])

>>> print r

[ 0. 1. 1.41421356]

Предупреждение:

Не следует использовать в качестве приемника результата массив, который фигурирует в предыдущих аргументах функции, так как при этом результат может быть испорчен. Следующий пример показывает именно такой вариант:

>>> import Numeric

>>> m = Numeric.array([0, 0, 0, 1, 0, 0, 0, 0])

>>> add(m[:-1], m[1:], m[1:])

array([0, 0, 1, 1, 1, 1, 1])

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

<p>Функции модуля Numeric</p>

Следующие функции модуля Numeric являются краткой записью некоторых наиболее употребительных сочетаний функций и методов:

ФункцияАналог функции
sum(a, axis)add.reduce(a, axis)
cumsum(a, axis)add.accumulate(a, axis)
product(a, axis)multiply.reduce(a, axis)
cumproduct(a, axis)multiply.accumulate(a, axis)
alltrue(a, axis)logical_and.reduce(a, axis)
sometrue(a, axis)logical_or.reduce(a, axis)
Примечание:

Параметр axis указывает размерность. 

<p>Функции для работы с массивами</p>

Функций достаточно много, поэтому подробно будут рассмотрены только две из них, а остальные сведены в таблицу.

Функция Numeric.take()

Функция Numeric.take() позволяет взять часть массива по заданным на определенном измерении индексам. По умолчанию номер измерения (третий аргумент) равен нулю.

>>> import Numeric

>>> a = Numeric.reshape(Numeric.arrayrange(25), (5, 5))

>>> print a

[[ 0  1  2  3  4]

 [ 5  6  7  8  9]

 [10 11 12 13 14]

 [15 16 17 18 19]

 [20 21 22 23 24]]

>>> print Numeric.take(a, [1], 0)

[ [5 6 7 8 9]]

>>> print Numeric.take(a, [1], 1)

[[ 1]

 [ 6]

 [11]

 [16]

 [21]]

Перейти на страницу:

Похожие книги

1С: Бухгалтерия 8 с нуля
1С: Бухгалтерия 8 с нуля

Книга содержит полное описание приемов и методов работы с программой 1С:Бухгалтерия 8. Рассматривается автоматизация всех основных участков бухгалтерии: учет наличных и безналичных денежных средств, основных средств и НМА, прихода и расхода товарно-материальных ценностей, зарплаты, производства. Описано, как вводить исходные данные, заполнять справочники и каталоги, работать с первичными документами, проводить их по учету, формировать разнообразные отчеты, выводить данные на печать, настраивать программу и использовать ее сервисные функции. Каждый урок содержит подробное описание рассматриваемой темы с детальным разбором и иллюстрированием всех этапов.Для широкого круга пользователей.

Алексей Анатольевич Гладкий

Программирование, программы, базы данных / Программное обеспечение / Бухучет и аудит / Финансы и бизнес / Книги по IT / Словари и Энциклопедии
1С: Управление торговлей 8.2
1С: Управление торговлей 8.2

Современные торговые предприятия предлагают своим клиентам широчайший ассортимент товаров, который исчисляется тысячами и десятками тысяч наименований. Причем многие позиции могут реализовываться на разных условиях: предоплата, отсрочка платежи, скидка, наценка, объем партии, и т.д. Клиенты зачастую делятся на категории – VIP-клиент, обычный клиент, постоянный клиент, мелкооптовый клиент, и т.д. Товарные позиции могут комплектоваться и разукомплектовываться, многие товары подлежат обязательной сертификации и гигиеническим исследованиям, некондиционные позиции необходимо списывать, на складах периодически должна проводиться инвентаризация, каждая компания должна иметь свою маркетинговую политику и т.д., вообщем – современное торговое предприятие представляет живой организм, находящийся в постоянном движении.Очевидно, что вся эта кипучая деятельность требует автоматизации. Для решения этой задачи существуют специальные программные средства, и в этой книге мы познакомим вам с самым популярным продуктом, предназначенным для автоматизации деятельности торгового предприятия – «1С Управление торговлей», которое реализовано на новейшей технологической платформе версии 1С 8.2.

Алексей Анатольевич Гладкий

Финансы / Программирование, программы, базы данных