import numpy as np
aO = np.linspace(l.,10.,10)
print ’aO:\n’, aO
a2 = np.copy(aO)
al = np.reshape(aO, (2, 5))
print ’al:\n’, al
a2.shape = (-1,50
print ’a2:\n>, a2
a3 = np.resize(a2, (3, 4))
p
al
a2 :
a3 ;
1
1.
6
1
6.
2
7.
2.
7.
til!
10,
шяшятщ
iiiiiiiii
ill!!
Jo и
rint ’a3:\n’, a3
;i|l
|
lllill
|
IIl|g|::|l
|
iifi
|
111
|
ISlill
|
lllill
|
ill:
|
111
|
lllflll
|
lllill
|
III
|
Здесь используется -1 при выборе формы массива (в нашем примере (2,-1)) для неявного задания числа элементов по одной оси массива — вычисляется по общему числу элементов.
Для изменения элемента массива используется доступ по индексу, а для части массива — получение среза. Некоторые основные возможности иллюстрируются следующим примером.
import numpy as np
a = np.reshape(np.1inspace(1,12,12),(3,4)) print ’a:\n’, a
print ’element (2,3): ’, a[2,3] print ’row 1: ’, a[l] print ’last row: ’, a[-1,:] print ’column 1: ’, a[:,1] print ’window 2x2: \n’, a[l:3,0:2]
Запись массива в файл (бинарный, NumPy формат, расширение .пру) производиться функцией save (), а чтение из файла — load О.
import numpy as np
a = np.reshape(np.1inspace(1.,8.,8),(2,4))
print ’a:\n’, a
np.save(’c:/tmp/data.npy’, a)
al = np.load(’c:/tmp/data.npy’)
print ’al:\n’, al
Математический Python
При чтении и записи массивов в текстовый файл используются функции tofileO и fromfileO.
Математические функции
В N urn Ру реализованы стандартные арифметические операции над элементами массивов (табл. 3.3).
Таблица 3.3 Арифметические операции над массивами
О
Функция
add(x,у) subtract^, у) multiply(x, у) divide(x, у) power(a:,y) negative(x)
писание
поэлементное сложение поэлементное вычитание поэлементное умножение поэлементное деление поэлементное возведение в степень изменение знака элементов массива
Примеры использования арифметических поэлементных операций над массивами:
import пшпру as пр
аО = пр.1inspace(1., 10., 10).reshape(2, 5)
print 9аО:\п9, аО
al - пр.ones(10).reshape(2, 5)
al = np.add(al, 1.)
print ’alAn’, al
a2 = np.add(a0, al)
print ^An’, a2
a3 = np.multiply(aO, al)
print ’аЗАп’, a3
a4 = np.power(aO, al)
print ,a4:\n,> a4
аЗ v- .о
Численные 1
ЧИСЛЕННЫЕ МЕТОДЫ 3
Содержание 5
Программное обеспечение 9
Элементы языка 21
| ’G \\Vab\\Python\\Testl \\src ’ , ’C-\\Program Files \\ ■/ NetBeans 6 7\\python! ’ , ’С Д \ Windows\\system32\\ python26 zip ’ , ’C^YPytho^G^DLLs’ , /С \\Python26\\lib ’ , 39
Математический Python 44
I 3 .4.II. ■ 61
И 0 ] 61
vs = Е 104
= np.zeros((m), ’float’) for i in range(0, m): 115
Прямые методы линейной алгебры 160
Итерационные методы линейной алгебры 173
ъВ <А< 72в, Ъ > 0, (5.16) 179
Спектральные задачи линейной алгебры 185
Шп {уШ’ук) = 1. 187
1||Й7б2ШШ&Ш 191
Нелинейные уравнения и системы 197
Задачи минимизации функций 206
/V) 207
Интерполирование и приближение функций 217
Численное интегрирование 228
Интегральные уравнения 239
Задача Коши для обыкновенных дифференциальных уравнений 252
= ^(/(Wi,r+1) + /(*»,»”)). п = 0,1,... 253
-£ = у*' 1Г = И1о < i < 100, 263
Краевые задачи для обыкновенных дифференциальных уравнений 265
М*)] = о, 266
[ 36 49 64 81 100 ]]
Среди других функций для поэлементных операций над массивами отметим:
Тригонометрические: sin(x), cos(x), tan(x), arcsin(x), arccos(x), arctan(x), hypot(x, y), arctan2(x,?/), degrees(x), radians(x);
Гиперболические: sinh(x), cosh(x), tanh(x), arcsinh(x), arccosh(x), arctanh(x);
Экспоненциальные и логарифмические: exp(x), expml(x)
(= ехр(а:) - 1), log(a:), loglO(rc), log2(a;)) loglp(a:)(= log(l +ж)).
Другие функции соответствуют обозначениям математических функций в модуле math стандартной библиотеки Python (см. табл. 3.1).
import numpy as np
a0 = np.linspace(0., np.pi, 9)
print 9aO:\n9, aO
al = np.sin(aO)
print ’alAn’, al
a2 = np.cos(aO)
print ,a2:\n,> a2
a3 = np.multiply(al, al) + np.multiply(a2, a2) - 1. print ’аЗЛп’, a3
[ О 00000000е+00^; 3 82ё83432е^01 ,• i: 7.07106781е+01 ;V 9.23879533 е+01 i 1 QQQ0Q00беЯ-ОО ; Q 23879533-r-Qi :
7.07106781 е *-01 | 3 8268Д432е+ОГ | 1 22464680е+16] : ’
[ 1.00000000е+00 9.23879533ё-01;Д 07106781^01
3.82683 43 2 е—01 : 6.123 234 0 0 е—17 +-3.82683432 е~01
-7 07106781 ^ —01 —9.23879533е-til ^ :
аЗ : -J;;У;:J :i :::;;: i;;;i:■ i;:::;: ■'I
[0. 0. 0 0 0 0 0 0 0 ]
Для работы с массивами с комплексными элементами предназначены функции: angle(x) (аналог функции phasc(x)), real(x), imag(x) и conj(x), которая возвращает массив с комплексно-сопряженными элементами.
import numpy as np
аО = np.1inspace(1., 10., 10).reshape(2, 5)
print ’аОЛп’, aO
al = np.add(aO, l.j)
print ’alAn’, al
a2 = np.conj(al)
print ’a2:\n’, a2
a3 = np.real(al)
print ’аЗЛп’, a3
a4 = np.imag(al)
М
print ’а4:\п’,
|
, а4
|
|
|
|
|
|
й0
|
|
|
|
|
|
|
|
И
|
|
llllltl
|
111
|
■liiii
|
|
|
|
1 ■
|
шшшш
|
КЕШ
|
111
|
liiii!
|
|
|
|
а!
и
|
1 +1 J
|
liiii
|
lllll
|
iilriifeisi
|
111
|
sliili
|
|
1
|
641 j
|
illlill
|
111
|
lljllllll
|
111
|
ililiii
|
lllBllllll
|
а2
|
|
|
|
|
|
|
|
II
|
1 -1 г
|
llilil
|
llli:!
|
1111111
|
IB
|
lllll!
|
illllllillli
|
I
|
6.-l.j
|
7 -1
|
Ill
|
1111111
|
111!
|
ill!!
|
io -i j II
|
аЗ!
|
|
|
|
|
|
|
|
и
|
1. 2
|
3
|
liiii
|
1111111
|
|
|
|
1
|
6 7.
|
8 ;
|
9
|
io II
|
|
|
|
a4 : ■ ■
атричные объекты
В вычислительной практике вместо N-мерных массивов часто удобнее оперировать с векторами и матрицами (одномерными и двумерными массивами). В частности, при программировании вместо поэлементных операций с массивами можно использовать матричные операции. Работа с матричными типами является вычислительной основой системы научных вычислений MATLAB.
В пакете NumPy помимо общего типа N-мерного массива (ndarray) имеются подклассы векторных, матричных и тензорных объектов. Нас интересуют матричные объекты NumPy (matrix) в плане их использования при решении задач линейной алгебры. Здесь мы отметим особенности использования matrix в сравнении с ndarray. Можно заметить, что, с одной стороны, работа с массивами как с более общим типом данных дает больше возможностей. С другой стороны, матричные задачи часто самодостаточны для приложений и пет необходимости в расширенных возможностях работы с общими массивами.
Для матричных объектов возможна инициализация по строке, элементы матрицы задаются в соответствии с синтаксисом МАЛА В с пробелом в качестве разделителя для строки и разделителем ; для столбцов.
import numpy as np
a = np.mat(’l 2 3; 4 5 30
b = np.mat([[l, 2, 3], [4, 5, 6]])
print type (a), ’aAn’, a
print type(b), ’b:\n’, b
пяпннпвнмяшя
тЁшавашшаяиивявшяшшттшш
Do'stlaringiz bilan baham: |