SlideShare a Scribd company logo
Основы NumPy
Технологии и языки программирования
Юдинцев В. В.
Кафедра теоретической механики
Самарский университет
8 апреля 2017 г.
NumPy
NumPy базовая библиотека для научных вычислений в
среде Python, предлагающая поддержку многомерных
массивов, матриц и эффективных функция для работы c
этими типами данных.
Быстродействие кода Python c использованием NumPy в 50
раз быстрее кода на “чистом” Python1
и сравнимо с
быстродействием коммерческого пакета матричной
алгебры MATLAB.
1
http://scipy.github.io/old-wiki/pages/PerformancePython
Импорт модуля
Вариант 1
import numpy
v = numpy . array ( [ 1 , 2 ] )
Вариант 2 (рекомендуется)
import numpy as np
v = np . array ( [ 1 , 2 ] )
Вариант 3
from numpy import *
v = array ( [ 1 , 2 ] )
array
1 import numpy as np
2 a = np . array ( [ [ 1 , 2 , 3] , [4 , 5 , 6 ] ] )
Свойства
Размерность массива
1 >>> a . ndim
2 2
Размеры (по каждому измерению)
1 >>> a . shape
2 (2 , 3)
Количество элементов (суммарное)
1 >>> a . size
2 6
Тип данных массива
1 import numpy as np
2 a = np . array ( [ [ 1 , 2 , 3] , [4 , 5 , 6 ] ] )
3 p r i n t ( a . dtype )
int64
1 a = np . array ( [ [ 1 . 0 , 2.0 , 3 . 0 ] , [ 4 . 0 , 5.0 , 6 . 0 ] ] )
2 p r i n t ( a . dtype )
float64
Функции для создания массивов
Генератор последовательностей
arange( start, stop, step, dtype )
start: начальное значение
stop: конечное значение (не включается в результат)
step: шаг
dtype: тип данных
От минус 1.0 до 1.0 с шагом 0.2:
1 v = np . arange ( −1.0 , 1.0 , 0 . 2 )
2 v
array ( [ −1.00000000e+00 , −8.00000000e−01, −6.00000000e−01,
−4.00000000e−01, −2.00000000e−01, −2.22044605e−16,
2.00000000e−01, 4.00000000e−01, 6.00000000e−01,
8.00000000e−01])
Массив нулевых значений
zeros( shape, dtype = float, order = ’C’ )
shape: размерность массива
dtype: тип элементов массива
order: порядок хранения элементов
>>> np . zeros ( 5 )
array ( [ 0 . , 0 . , 0 . , 0 . , 0 . ] )
Матрица-столбец нулевых значений
>>> np . zeros ( ( 2 , 1 ) )
array ( [ [ 0 . ] ,
[ 0 . ] ] )
Массив единиц
ones( shape, dtype = float, order = ’C’ )
shape: размерность массива
dtype: тип элементов массива
order: порядок хранения элементов
>>> np . ones ( 5 )
array ( [ 1 . , 1 . , 1 . , 1 . , 1 . ] )
Матрица единиц
>>> np . ones ( (3 , 2) )
array ( [ [ 1 . , 1 . ] ,
[ 1 . , 1 . ] ,
[ 1 . , 1 . ] ] )
Сетка на заданном интервале
linspace(start, stop, num=50, endpoint=True, retstep=False, ...)
start: начальное значение
stop: конечное значение
num: количество элементов
endpoint: если True, то последний элемент (end) включается
в результат
retstep: возвращать и вычисленное значение шага
>>> np . linspace ( 0 . 0 , 2.0 , 4)
array ( [ 0. , 0.66666667 , 1.33333333 , 2. ] )
Матрица единиц
>>> np . linspace ( 0 . 0 , 2.0 , 4 , retstep = True )
( array ( [ 0. , 0.66667 , 1.3333 , 2. ] ) , 0.66666)
Функция от индексов массива
1 a = np . fromfunction ( lambda i , j : i == j , (3 , 3) )
2 p r i n t ( a )
[ [ True , False , False ] ,
[ False , True , False ] ,
[ False , False , True ] ]
Копирование
Операция “присвоения” создает новую ссылку (псевдоним) на
объект в памяти:
1 a = np . array ( [ [1 , 2] , [3 , 4] ] )
2 b = a
3 p r i n t ( b i s a )
True
Для создания копии массива используется метод copy():
3 b = a . copy ( )
4 p r i n t ( b i s a )
False
Основные операции
Изменение размерности
Функция reshape изменяет размерность массива, не меняя сами
данные (новый “взгляд” на массив)
1 a = np . arange ( 6 )
2 p r i n t ( a )
[0 1 2 3 4 5]
3 b = np . reshape ( a , (3 , 2) )
4 p r i n t ( b )
5 b [ 0 , 0 ] = 9
6 p r i n t ( a )
[ [ 0 1]
[2 3]
[4 5 ] ]
[9 1 2 3 4 5]
Изменение размерности
Одна из размерностей может быть равна “-1”. В этом случае эта
размерность вычисляется:
1 a = np . reshape ( np . arange ( 6 ) , (3 , −1) )
2 p r i n t ( a )
[ [ 0 1]
[2 3]
[4 5 ] ]
Плоский список
Преобразование многомерного массива в “плоский” список
(стиль Си: order=’C’ по умолчанию):
3 b = np . reshape ( a , −1)
4 p r i n t ( b )
[0 , 1 , 2 , 3 , 4 , 5]
Плоский список
Преобразование многомерного массива в “плоский” список
(стиль Фортран: order=’F’)
3 b = np . reshape ( a , −1 , order = ’ F ’ )
4 p r i n t ( b )
[0 , 2 , 4 , 1 , 3 , 5]
Формирование плоского списка: ravel
Преобразование многомерного массива в “плоский” список
(стиль Си: order=’C’ по умолчанию):
1 a = np . reshape ( np . arange ( 6 ) , (3 , −1) )
2 p r i n t ( a )
[ [ 0 1]
[2 3]
[4 5 ] ]
3 b = np . ravel ( a )
4 p r i n t ( b )
[0 1 2 3 4 5]
5 b = np . ravel ( a , order = ’ F ’ )
6 p r i n t ( b )
[0 2 4 1 3 5]
vstack: склейка строк
1 a = np . array ( [ [ 1 , 2 ] , [ 3 , 4 ] ] )
2 b = np . array ( [ [ 5 , 6 ] , [ 7 , 8 ] ] )
3 c = np . vstack ( ( a , b ) )
4 p r i n t ( c )
[ [ 1 2]
[3 4]
[5 6]
[7 8 ] ]
hstack: склейка столбцов
1 a = np . array ( [ [ 1 , 2 ] , [ 3 , 4 ] ] )
2 b = np . array ( [ [ 5 , 6 ] , [ 7 , 8 ] ] )
3 c = np . hstack ( ( a , b ) )
4 p r i n t ( c )
[ [ 1 2 5 6]
[3 4 7 8 ] ]
hsplit: разделение на части по горизонтали
1 a = np . f l o o r ( 10 * np . random . random ( (2 ,12) ) )
2 p r i n t ( a )
[ [ 6. 9. 2. 8. 6. 8 . ]
[ 2. 1. 6. 8. 8. 6 . ] ]
3 np . h s p l i t ( a , 3 )
[ array ( [ [ 6 . , 9 . ] ,
[ 2 . , 1 . ] ] ) ,
array ( [ [ 2 . , 8 . ] ,
[ 6 . , 8 . ] ] ) ,
array ( [ [ 6 . , 8 . ] ,
[ 8 . , 6 . ] ] ) ]
vsplit: разделение на части вертикали
1 a = np . f l o o r ( 10*np . random . random ( ( 4 , 2 ) ) )
2 p r i n t ( a )
[ [ 5. 6 . ]
[ 1. 5 . ]
[ 5. 6 . ]
[ 4. 3 . ] ]
3 np . v s p l i t ( a , 2 )
[ array ( [ [ 5 . , 6 . ] ,
[ 1 . , 5 . ] ] ) ,
array ( [ [ 5 . , 6 . ] ,
[ 4 . , 3 . ] ] ) ]
Функции
Арифметические операции
Арифметические операции выполняются поэлементно
1 a = np . array ( [ [ 1 , 2 ] , [ 3 , 4 ] ] )
2 b = np . array ( [ [ 5 , 6 ] , [ 7 , 8 ] ] )
3 c = a + b
4 p r i n t ( c )
[ [ 6 8]
[10 12]]
1 c = 2 * ( a + b )
2 p r i n t ( c )
[[12 16]
[20 24]]
Математические функции
1 a = np . reshape ( np . arange ( 6 ) , (2 , −1) )
2 p r i n t ( a )
[ [ 0 1 2]
[3 4 5 ] ]
Возведение в степень:
3 p r i n t ( np . power ( a , 2 ) )
[ [ 0 , 1 , 4] ,
[ 9 , 16 , 25]]
3 p r i n t ( np . power ( a , a ) )
[ [ 1 1 4]
[ 27 256 3125]]
Математические функции
1 a = np . reshape ( np . arange ( 6 ) , (2 , −1) )
2 p r i n t ( a )
[ [ 0 1 2]
[3 4 5 ] ]
3 p r i n t ( np . exp ( a ) )
[ [ 1. 2.71828183 7.3890561 ]
[ 20.08553692 54.59815003 148.4131591 ] ]
3 p r i n t ( a / ( a +1) )
[ [ 0. 0.5 0.66666667]
[ 0.75 0.8 0.83333333]]
dot: скалярное произведение
1 a = np . array ( [ [ 1 , 2 ] , [ 3 , 4 ] ] )
2 b = np . array ( [ [ 5 , 6 ] , [ 7 , 8 ] ] )
3
4 c = np . dot ( a , b )
5
6 p r i n t ( c )
[[19 22]
[43 50]]
Индексы и срезы
Индексация
1 a = np . arange ( 8 ) **2
2 p r i n t ( a )
[ 0 1 4 9 16 25 36 49]
Индексация начинается с нуля. Третий элемент массива имеет
индекс “2”:
2 p r i n t ( a [ 2 ] )
4
Срезы
1 a = np . arange ( 8 ) **2
2 p r i n t ( a )
[ 0 1 4 9 16 25 36 49]
[ Начальное значение: граница: шаг ]
3 p r i n t ( a [ 2 : 6 : 2 ] )
4 , 16
Многомерные массивы
1 a = np . reshape ( np . arange ( 8 ) ,(2 , −1) )
2 p r i n t ( a )
[ [ 0 1 2 3]
[4 5 6 7 ] ]
3 p r i n t ( a [ 0 , 1 ] )
1
4 p r i n t ( a [ : , 1 ] )
[1 5]
5 p r i n t ( a [ : , 1 : 3 ] )
[ [ 1 2]
[5 6 ] ]
Многомерные массивы
1 a = np . reshape ( np . arange ( 8 ) ,(2 , −1) )
2 p r i n t ( a )
[ [ 0 1 2 3]
[4 5 6 7 ] ]
Последняя строка
3 p r i n t ( a [ −1 ,:] )
[4 5 6 7]
Второй столбец с конца
4 p r i n t ( a [: , −2] )
[2 6]
Использование ... вместо :
1 a = np . array ( [ [ [ 0 , 1 , 2] ,
2 [ 10 , 12 , 1 3 ] ] ,
3 [[100 ,101 ,102] ,
4 [110 ,112 ,113]]])
5 p r i n t ( a . shape )
(2 , 2 , 3)
3 p r i n t ( a [ 1 , . . . ] )
[ [ 0 , 1 , 2] ,
[ 10 , 12 , 13]]
4 p r i n t ( a [ . . . , 2 ] )
[ [ 2 13]
[102 113]]
Массив, как итератор
При использовании массивов в конструкциях типа for ... in,
итерация выполняется только по первой размерности:
1 a = np . array ( [ [ [ 0 , 1 , 2] ,
2 [ 10 , 12 , 1 3 ] ] ,
3 [[100 ,101 ,102] ,
4 [110 ,112 ,113]]])
5
6 f o r row in a :
7 p r i n t ( ’ Element : ’ , row )
Element : [ [ 0 1 2]
[10 12 13]]
Element : [[100 101 102]
[110 112 113]]
Массив, как итератор
Итерация по всем элементам (последовательно по каждой
размерности):
1 a = np . array ( [ [ [ 0 , 1 , 2] , [ 10 , 12 , 1 3 ] ] ,
2 [[100 ,101 ,102] , [110 ,112 ,113]]])
3 f o r i in np . ravel ( a ) :
4 p r i n t ( ’ Element ’ , i )
Element 0
Element 1
Element 2
Element 10
. . .
Element 101
Element 102
Element 110
Element 112
Element 113
Индексация при помощи массива индексов
1 a = np . arange ( 6 ) *2
2 i = np . array ( [ 1 , 3 , 5 , 2 ] )
3
4 p r i n t ( a [ i ] )
[ 2 6 10 4]
5 i = np . array ( [ [1 , 3] , [5 , 2] ] )
6
7 p r i n t ( a [ i ] )
[ [ 2 6]
[10 4 ] ]
Индексация при помощи массива типа bool
1 a = np . arange ( 6 ) *2
2 p r i n t ( a )
[ 0 2 4 6 8 10]
Булев массив (каждый элемент сравнивается с 4):
3 p r i n t ( a>4 )
[ False False False True True True ]
Использование массива для извлечения элементов:
4 p r i n t ( a [ a >4] )
[ 6 8 10]
Статистические функции
min, max, sum
1 a = np . array ( [ [1 , 2] , [3 , 4] ] )
Минимальное значение всего массива
2 p r i n t ( a . min ( ) )
1
Минимальные значения столбцов
3 p r i n t ( a . min ( axis =0) )
[1 2]
Минимальные значения строк
4 p r i n t ( a . min ( axis =1) )
[1 3]
min, max, sum
1 a = np . array ( [ [1 , 2] , [3 , 4] ] )
Сумма всех значений
2 p r i n t ( a . sum ( ) )
10
Сумма строк
3 p r i n t ( a . sum ( axis =0) )
[4 6]
Сумма столбцов
4 p r i n t ( a . sum ( axis =1) )
[3 7]
Среднее значение
1 a = np . array ( [ [1 , 2] , [3 , 4] ] )
Среднее значение всех элементов
2 p r i n t ( a . mean ( ) )
2.5
Среднее по первой размерности (в столбцах)
3 p r i n t ( a . mean ( axis =0) )
[ 2 . 3 . ]
Среднее по второй размерности (в строках)
4 p r i n t ( a . mean ( axis =1) )
[ 1.5 3 . 5 ]
Файловые функции
Чтение массива из текстового файла
File1.txt
# Results
1 23 5
2 65 6
4 55 4
Прочитать значения из файла File1.txt в массив res
1 res = np . loadtxt ( ” f i l e 1 . t x t ” , de l i mi t e r = ” ” )
2 p r i n t ( res )
[ [ 1. 23. 5 . ]
[ 2. 65. 6 . ]
[ 4. 55. 4 . ] ]
Чтение массива из файла: usecols
File1.txt
# Results
1 23 5
2 65 6
4 55 4
Прочитать значения из файла File1.txt в массив res столбцы с
индексами 1 и 2:
1 res = np . loadtxt ( ” f i l e 1 . t x t ” , usecols = (1 , 2) )
2 p r i n t ( res )
[ [ 23. 5 . ]
[ 65. 6 . ]
[ 55. 4 . ] ]
Чтение массива из файла: skiprows
File1.txt
# Results
1 23 5
2 65 6
4 55 4
Прочитать значения из файла File1.txt в массив res, пропустив
первые две строки
1 res = np . loadtxt ( ” f i l e 1 . t x t ” , skiprows = 2 )
2 p r i n t ( res )
[ [ 2. 65. 6 . ]
[ 4. 55. 4 . ] ]
Запись массива в текстовый файл
x = np . linspace (0 , np . pi , 5) . reshape ( ( 5 , 1 ) )
table = np . hstack ( ( x , np . sin ( x ) ) )
np . savetxt ( ’ sin . t x t ’ , table , de l i m it e r = ’ , ’ )
Содержимое файла sin.txt
0.000000000000000000e+00 ,0.000000000000000000e+00
7.853981633974482790e−01,7.071067811865474617e−01
1.570796326794896558e+00 ,1.000000000000000000e+00
2.356194490192344837e+00 ,7.071067811865475727e−01
3.141592653589793116e+00 ,1.224646799147353207e−16
Форматирование вывода
x = np . linspace (0 , np . pi , 5) . reshape ( ( 5 , 1 ) )
table = np . hstack ( ( x , np . sin ( x ) ) )
np . savetxt ( ’ sin . t x t ’ , table , fmt= ’ %7.4 f ’ )
Содержимое файла sin.txt
0.0000 0.0000
0.7854 0.7071
1.5708 1.0000
2.3562 0.7071
3.1416 0.0000
Форматирование вывода
x = np . linspace (0 , np . pi , 5) . reshape ( ( 5 , 1 ) )
table = np . hstack ( ( x , np . sin ( x ) ) )
np . savetxt ( ’ sin . t x t ’ , table , fmt = ’ %9.4g ’ ,
header = ’−−data s t a r t −− ’ ,
footer = ’−− data end −− ’ ) )
Содержимое файла sin.txt
# −−data s t a r t −−
0 0
0.7854 0.7071
1.571 1
2.356 0.7071
3.142 1.225e−16
# −− data end −−
Справка
1 Quickstart tutorial
https://docs.scipy.org/doc/numpy-dev/user/quickstart.html
2 Numpy User Guide
https://docs.scipy.org/doc/numpy/user/
3 Numpy Reference Guide
https://docs.scipy.org/doc/numpy/reference/

More Related Content

What's hot

NumPy.pptx
NumPy.pptxNumPy.pptx
NumPy.pptx
EN1036VivekSingh
 
Advanced python concepts
Advanced python conceptsAdvanced python concepts
Advanced python concepts
Manusha Dilan
 
Introduction to numpy Session 1
Introduction to numpy Session 1Introduction to numpy Session 1
Introduction to numpy Session 1
Jatin Miglani
 
Data Structure
Data StructureData Structure
Data Structure
Karthikeyan A K
 
Python NumPy Tutorial | NumPy Array | Edureka
Python NumPy Tutorial | NumPy Array | EdurekaPython NumPy Tutorial | NumPy Array | Edureka
Python NumPy Tutorial | NumPy Array | Edureka
Edureka!
 
Python Pandas
Python PandasPython Pandas
Python Pandas
Sunil OS
 
Introduction to Python Pandas for Data Analytics
Introduction to Python Pandas for Data AnalyticsIntroduction to Python Pandas for Data Analytics
Introduction to Python Pandas for Data Analytics
Phoenix
 
Quicksort
QuicksortQuicksort
Quicksort
Rajendran
 
Arrays in python
Arrays in pythonArrays in python
Arrays in python
Lifna C.S
 
List,tuple,dictionary
List,tuple,dictionaryList,tuple,dictionary
List,tuple,dictionary
nitamhaske
 
Introduction to pandas
Introduction to pandasIntroduction to pandas
Introduction to pandas
Piyush rai
 
Python - Numpy/Pandas/Matplot Machine Learning Libraries
Python - Numpy/Pandas/Matplot Machine Learning LibrariesPython - Numpy/Pandas/Matplot Machine Learning Libraries
Python - Numpy/Pandas/Matplot Machine Learning Libraries
Andrew Ferlitsch
 
R programming Fundamentals
R programming  FundamentalsR programming  Fundamentals
R programming Fundamentals
Ragia Ibrahim
 
Introduction to numpy
Introduction to numpyIntroduction to numpy
Introduction to numpy
Gaurav Aggarwal
 
Iteration, induction, and recursion
Iteration, induction, and recursionIteration, induction, and recursion
Iteration, induction, and recursion
Mohammed Hussein
 
Data structures and algorithms
Data structures and algorithmsData structures and algorithms
Data structures and algorithms
Julie Iskander
 
Brute force
Brute forceBrute force
NUMPY-2.pptx
NUMPY-2.pptxNUMPY-2.pptx
NUMPY-2.pptx
MahendraVusa
 
CLOSEST PAIR (Final)
CLOSEST PAIR (Final)CLOSEST PAIR (Final)
CLOSEST PAIR (Final)Aruneel Das
 
Python : Regular expressions
Python : Regular expressionsPython : Regular expressions
Python : Regular expressions
Emertxe Information Technologies Pvt Ltd
 

What's hot (20)

NumPy.pptx
NumPy.pptxNumPy.pptx
NumPy.pptx
 
Advanced python concepts
Advanced python conceptsAdvanced python concepts
Advanced python concepts
 
Introduction to numpy Session 1
Introduction to numpy Session 1Introduction to numpy Session 1
Introduction to numpy Session 1
 
Data Structure
Data StructureData Structure
Data Structure
 
Python NumPy Tutorial | NumPy Array | Edureka
Python NumPy Tutorial | NumPy Array | EdurekaPython NumPy Tutorial | NumPy Array | Edureka
Python NumPy Tutorial | NumPy Array | Edureka
 
Python Pandas
Python PandasPython Pandas
Python Pandas
 
Introduction to Python Pandas for Data Analytics
Introduction to Python Pandas for Data AnalyticsIntroduction to Python Pandas for Data Analytics
Introduction to Python Pandas for Data Analytics
 
Quicksort
QuicksortQuicksort
Quicksort
 
Arrays in python
Arrays in pythonArrays in python
Arrays in python
 
List,tuple,dictionary
List,tuple,dictionaryList,tuple,dictionary
List,tuple,dictionary
 
Introduction to pandas
Introduction to pandasIntroduction to pandas
Introduction to pandas
 
Python - Numpy/Pandas/Matplot Machine Learning Libraries
Python - Numpy/Pandas/Matplot Machine Learning LibrariesPython - Numpy/Pandas/Matplot Machine Learning Libraries
Python - Numpy/Pandas/Matplot Machine Learning Libraries
 
R programming Fundamentals
R programming  FundamentalsR programming  Fundamentals
R programming Fundamentals
 
Introduction to numpy
Introduction to numpyIntroduction to numpy
Introduction to numpy
 
Iteration, induction, and recursion
Iteration, induction, and recursionIteration, induction, and recursion
Iteration, induction, and recursion
 
Data structures and algorithms
Data structures and algorithmsData structures and algorithms
Data structures and algorithms
 
Brute force
Brute forceBrute force
Brute force
 
NUMPY-2.pptx
NUMPY-2.pptxNUMPY-2.pptx
NUMPY-2.pptx
 
CLOSEST PAIR (Final)
CLOSEST PAIR (Final)CLOSEST PAIR (Final)
CLOSEST PAIR (Final)
 
Python : Regular expressions
Python : Regular expressionsPython : Regular expressions
Python : Regular expressions
 

Similar to Основы NumPy

Основы SciPy
Основы SciPyОсновы SciPy
8 встреча — Язык программирования Python (В. Ананьев)
8 встреча — Язык программирования Python (В. Ананьев)8 встреча — Язык программирования Python (В. Ананьев)
8 встреча — Язык программирования Python (В. Ананьев)
Smolensk Computer Science Club
 
Charming python sc2-8
Charming python sc2-8Charming python sc2-8
Charming python sc2-8
Vladislav Ananev
 
Быстрые конструкции в Python - Олег Шидловский, Python Meetup 26.09.2014
Быстрые конструкции в Python - Олег Шидловский, Python Meetup 26.09.2014Быстрые конструкции в Python - Олег Шидловский, Python Meetup 26.09.2014
Быстрые конструкции в Python - Олег Шидловский, Python Meetup 26.09.2014
Python Meetup
 
массивы.строки
массивы.строкимассивы.строки
массивы.строкиdasha2012
 
Основы языка Питон: типы данных, операторы
Основы языка Питон: типы данных, операторыОсновы языка Питон: типы данных, операторы
Основы языка Питон: типы данных, операторы
Theoretical mechanics department
 
Одномерные массивы целых чисел
Одномерные массивы целых чиселОдномерные массивы целых чисел
Одномерные массивы целых чисел
Andrey Dolinin
 
Алгоритмы и структуры данных весна 2014 лекция 3
Алгоритмы и структуры данных весна 2014 лекция 3Алгоритмы и структуры данных весна 2014 лекция 3
Алгоритмы и структуры данных весна 2014 лекция 3Technopark
 
Лекция 2: Абстрактные типы данных. Алгоритмы сортировки
Лекция 2: Абстрактные типы данных. Алгоритмы сортировкиЛекция 2: Абстрактные типы данных. Алгоритмы сортировки
Лекция 2: Абстрактные типы данных. Алгоритмы сортировкиMikhail Kurnosov
 
Олег Алистратов — Сортировка списков в Perl и Python
Олег Алистратов — Сортировка списков в Perl и PythonОлег Алистратов — Сортировка списков в Perl и Python
Олег Алистратов — Сортировка списков в Perl и Python
Yandex
 
Красота и изящность стандартной библиотеки Python
Красота и изящность стандартной библиотеки PythonКрасота и изящность стандартной библиотеки Python
Красота и изящность стандартной библиотеки Python
Python Meetup
 
Основы языка R
Основы языка RОсновы языка R
Основы языка R
Sergey Mastitsky
 
Функциональное программирование - Александр Алексеев
Функциональное программирование - Александр АлексеевФункциональное программирование - Александр Алексеев
Функциональное программирование - Александр Алексеев
Aleksander Alekseev
 
Ruby: работа с массивами
Ruby: работа с массивамиRuby: работа с массивами
Ruby: работа с массивами
Evgeny Smirnov
 
01 - Введение в дискретную математику. Теория множеств и комбинаторика
01 - Введение в дискретную математику. Теория множеств и комбинаторика01 - Введение в дискретную математику. Теория множеств и комбинаторика
01 - Введение в дискретную математику. Теория множеств и комбинаторика
Roman Brovko
 
291 цикл уроков на тему массивы
291 цикл уроков на тему  массивы291 цикл уроков на тему  массивы
291 цикл уроков на тему массивыsany0507
 
Лекция 2: Абстрактные типы данных. Алгоритмы сортировки
Лекция 2: Абстрактные типы данных. Алгоритмы сортировкиЛекция 2: Абстрактные типы данных. Алгоритмы сортировки
Лекция 2: Абстрактные типы данных. Алгоритмы сортировкиMikhail Kurnosov
 
Функциональное программирование.Списки. Функции высших порядков
Функциональное программирование.Списки. Функции высших порядковФункциональное программирование.Списки. Функции высших порядков
Функциональное программирование.Списки. Функции высших порядков
Система дистанционного обучения MyDLS
 
Python. Объектно-ориентированное программирование
Python. Объектно-ориентированное программирование Python. Объектно-ориентированное программирование
Python. Объектно-ориентированное программирование
Theoretical mechanics department
 
0. основы r
0. основы r0. основы r
0. основы rmsuteam
 

Similar to Основы NumPy (20)

Основы SciPy
Основы SciPyОсновы SciPy
Основы SciPy
 
8 встреча — Язык программирования Python (В. Ананьев)
8 встреча — Язык программирования Python (В. Ананьев)8 встреча — Язык программирования Python (В. Ананьев)
8 встреча — Язык программирования Python (В. Ананьев)
 
Charming python sc2-8
Charming python sc2-8Charming python sc2-8
Charming python sc2-8
 
Быстрые конструкции в Python - Олег Шидловский, Python Meetup 26.09.2014
Быстрые конструкции в Python - Олег Шидловский, Python Meetup 26.09.2014Быстрые конструкции в Python - Олег Шидловский, Python Meetup 26.09.2014
Быстрые конструкции в Python - Олег Шидловский, Python Meetup 26.09.2014
 
массивы.строки
массивы.строкимассивы.строки
массивы.строки
 
Основы языка Питон: типы данных, операторы
Основы языка Питон: типы данных, операторыОсновы языка Питон: типы данных, операторы
Основы языка Питон: типы данных, операторы
 
Одномерные массивы целых чисел
Одномерные массивы целых чиселОдномерные массивы целых чисел
Одномерные массивы целых чисел
 
Алгоритмы и структуры данных весна 2014 лекция 3
Алгоритмы и структуры данных весна 2014 лекция 3Алгоритмы и структуры данных весна 2014 лекция 3
Алгоритмы и структуры данных весна 2014 лекция 3
 
Лекция 2: Абстрактные типы данных. Алгоритмы сортировки
Лекция 2: Абстрактные типы данных. Алгоритмы сортировкиЛекция 2: Абстрактные типы данных. Алгоритмы сортировки
Лекция 2: Абстрактные типы данных. Алгоритмы сортировки
 
Олег Алистратов — Сортировка списков в Perl и Python
Олег Алистратов — Сортировка списков в Perl и PythonОлег Алистратов — Сортировка списков в Perl и Python
Олег Алистратов — Сортировка списков в Perl и Python
 
Красота и изящность стандартной библиотеки Python
Красота и изящность стандартной библиотеки PythonКрасота и изящность стандартной библиотеки Python
Красота и изящность стандартной библиотеки Python
 
Основы языка R
Основы языка RОсновы языка R
Основы языка R
 
Функциональное программирование - Александр Алексеев
Функциональное программирование - Александр АлексеевФункциональное программирование - Александр Алексеев
Функциональное программирование - Александр Алексеев
 
Ruby: работа с массивами
Ruby: работа с массивамиRuby: работа с массивами
Ruby: работа с массивами
 
01 - Введение в дискретную математику. Теория множеств и комбинаторика
01 - Введение в дискретную математику. Теория множеств и комбинаторика01 - Введение в дискретную математику. Теория множеств и комбинаторика
01 - Введение в дискретную математику. Теория множеств и комбинаторика
 
291 цикл уроков на тему массивы
291 цикл уроков на тему  массивы291 цикл уроков на тему  массивы
291 цикл уроков на тему массивы
 
Лекция 2: Абстрактные типы данных. Алгоритмы сортировки
Лекция 2: Абстрактные типы данных. Алгоритмы сортировкиЛекция 2: Абстрактные типы данных. Алгоритмы сортировки
Лекция 2: Абстрактные типы данных. Алгоритмы сортировки
 
Функциональное программирование.Списки. Функции высших порядков
Функциональное программирование.Списки. Функции высших порядковФункциональное программирование.Списки. Функции высших порядков
Функциональное программирование.Списки. Функции высших порядков
 
Python. Объектно-ориентированное программирование
Python. Объектно-ориентированное программирование Python. Объектно-ориентированное программирование
Python. Объектно-ориентированное программирование
 
0. основы r
0. основы r0. основы r
0. основы r
 

More from Theoretical mechanics department

Космический мусор
Космический мусорКосмический мусор
Космический мусор
Theoretical mechanics department
 
Модификация механизма Йо-Йо
Модификация механизма Йо-ЙоМодификация механизма Йо-Йо
Модификация механизма Йо-Йо
Theoretical mechanics department
 
Python. Обработка ошибок
Python. Обработка ошибокPython. Обработка ошибок
Python. Обработка ошибок
Theoretical mechanics department
 
Python: ввод и вывод
Python: ввод и выводPython: ввод и вывод
Python: ввод и вывод
Theoretical mechanics department
 
Основы Python. Функции
Основы Python. ФункцииОсновы Python. Функции
Основы Python. Функции
Theoretical mechanics department
 
Машинная арифметика. Cтандарт IEEE-754
Машинная арифметика. Cтандарт IEEE-754Машинная арифметика. Cтандарт IEEE-754
Машинная арифметика. Cтандарт IEEE-754
Theoretical mechanics department
 
Chaotic motions of tethered satellites with low thrust
Chaotic motions of tethered satellites with low thrust Chaotic motions of tethered satellites with low thrust
Chaotic motions of tethered satellites with low thrust
Theoretical mechanics department
 
Docking with noncooperative spent orbital stage using probe-cone mechanism
Docking with noncooperative spent orbital stage using probe-cone mechanismDocking with noncooperative spent orbital stage using probe-cone mechanism
Docking with noncooperative spent orbital stage using probe-cone mechanism
Theoretical mechanics department
 
Алгоритмы и языки программирования
Алгоритмы и языки программированияАлгоритмы и языки программирования
Алгоритмы и языки программирования
Theoretical mechanics department
 
Deployers for nanosatellites
Deployers for nanosatellitesDeployers for nanosatellites
Deployers for nanosatellites
Theoretical mechanics department
 
CubeSat separation dynamics
CubeSat separation dynamicsCubeSat separation dynamics
CubeSat separation dynamics
Theoretical mechanics department
 
Chaotic Behavior of a Passive Satellite During Towing by a Tether
Chaotic Behavior of a Passive Satellite During Towing by a TetherChaotic Behavior of a Passive Satellite During Towing by a Tether
Chaotic Behavior of a Passive Satellite During Towing by a Tether
Theoretical mechanics department
 
Основы MATLAB. Численные методы
Основы MATLAB. Численные методыОсновы MATLAB. Численные методы
Основы MATLAB. Численные методы
Theoretical mechanics department
 
Транспортно-пусковой контейнер для наноспутников типоразмера 3U, 3U+
Транспортно-пусковой контейнер для наноспутников типоразмера 3U, 3U+Транспортно-пусковой контейнер для наноспутников типоразмера 3U, 3U+
Транспортно-пусковой контейнер для наноспутников типоразмера 3U, 3U+
Theoretical mechanics department
 
On problems of active space debris removal using tethered towing
On problems of active space debris removal using tethered towingOn problems of active space debris removal using tethered towing
On problems of active space debris removal using tethered towingTheoretical mechanics department
 
Методы решения нелинейных уравнений
Методы решения нелинейных уравненийМетоды решения нелинейных уравнений
Методы решения нелинейных уравнений
Theoretical mechanics department
 
Наноспутники формата кубсат
Наноспутники формата кубсатНаноспутники формата кубсат
Наноспутники формата кубсат
Theoretical mechanics department
 
Отделение створок головного обтекателя
Отделение створок головного обтекателяОтделение створок головного обтекателя
Отделение створок головного обтекателя
Theoretical mechanics department
 
1U-3U+ Cubesat Deployer by JSC SRC "Progress"
1U-3U+ Cubesat Deployer by JSC SRC "Progress"1U-3U+ Cubesat Deployer by JSC SRC "Progress"
1U-3U+ Cubesat Deployer by JSC SRC "Progress"
Theoretical mechanics department
 
The Dynamics of Tethered Debris With Flexible Appendages and Residual Fuel
The Dynamics of Tethered Debris With Flexible Appendages and Residual FuelThe Dynamics of Tethered Debris With Flexible Appendages and Residual Fuel
The Dynamics of Tethered Debris With Flexible Appendages and Residual Fuel
Theoretical mechanics department
 

More from Theoretical mechanics department (20)

Космический мусор
Космический мусорКосмический мусор
Космический мусор
 
Модификация механизма Йо-Йо
Модификация механизма Йо-ЙоМодификация механизма Йо-Йо
Модификация механизма Йо-Йо
 
Python. Обработка ошибок
Python. Обработка ошибокPython. Обработка ошибок
Python. Обработка ошибок
 
Python: ввод и вывод
Python: ввод и выводPython: ввод и вывод
Python: ввод и вывод
 
Основы Python. Функции
Основы Python. ФункцииОсновы Python. Функции
Основы Python. Функции
 
Машинная арифметика. Cтандарт IEEE-754
Машинная арифметика. Cтандарт IEEE-754Машинная арифметика. Cтандарт IEEE-754
Машинная арифметика. Cтандарт IEEE-754
 
Chaotic motions of tethered satellites with low thrust
Chaotic motions of tethered satellites with low thrust Chaotic motions of tethered satellites with low thrust
Chaotic motions of tethered satellites with low thrust
 
Docking with noncooperative spent orbital stage using probe-cone mechanism
Docking with noncooperative spent orbital stage using probe-cone mechanismDocking with noncooperative spent orbital stage using probe-cone mechanism
Docking with noncooperative spent orbital stage using probe-cone mechanism
 
Алгоритмы и языки программирования
Алгоритмы и языки программированияАлгоритмы и языки программирования
Алгоритмы и языки программирования
 
Deployers for nanosatellites
Deployers for nanosatellitesDeployers for nanosatellites
Deployers for nanosatellites
 
CubeSat separation dynamics
CubeSat separation dynamicsCubeSat separation dynamics
CubeSat separation dynamics
 
Chaotic Behavior of a Passive Satellite During Towing by a Tether
Chaotic Behavior of a Passive Satellite During Towing by a TetherChaotic Behavior of a Passive Satellite During Towing by a Tether
Chaotic Behavior of a Passive Satellite During Towing by a Tether
 
Основы MATLAB. Численные методы
Основы MATLAB. Численные методыОсновы MATLAB. Численные методы
Основы MATLAB. Численные методы
 
Транспортно-пусковой контейнер для наноспутников типоразмера 3U, 3U+
Транспортно-пусковой контейнер для наноспутников типоразмера 3U, 3U+Транспортно-пусковой контейнер для наноспутников типоразмера 3U, 3U+
Транспортно-пусковой контейнер для наноспутников типоразмера 3U, 3U+
 
On problems of active space debris removal using tethered towing
On problems of active space debris removal using tethered towingOn problems of active space debris removal using tethered towing
On problems of active space debris removal using tethered towing
 
Методы решения нелинейных уравнений
Методы решения нелинейных уравненийМетоды решения нелинейных уравнений
Методы решения нелинейных уравнений
 
Наноспутники формата кубсат
Наноспутники формата кубсатНаноспутники формата кубсат
Наноспутники формата кубсат
 
Отделение створок головного обтекателя
Отделение створок головного обтекателяОтделение створок головного обтекателя
Отделение створок головного обтекателя
 
1U-3U+ Cubesat Deployer by JSC SRC "Progress"
1U-3U+ Cubesat Deployer by JSC SRC "Progress"1U-3U+ Cubesat Deployer by JSC SRC "Progress"
1U-3U+ Cubesat Deployer by JSC SRC "Progress"
 
The Dynamics of Tethered Debris With Flexible Appendages and Residual Fuel
The Dynamics of Tethered Debris With Flexible Appendages and Residual FuelThe Dynamics of Tethered Debris With Flexible Appendages and Residual Fuel
The Dynamics of Tethered Debris With Flexible Appendages and Residual Fuel
 

Основы NumPy

  • 1. Основы NumPy Технологии и языки программирования Юдинцев В. В. Кафедра теоретической механики Самарский университет 8 апреля 2017 г.
  • 2. NumPy NumPy базовая библиотека для научных вычислений в среде Python, предлагающая поддержку многомерных массивов, матриц и эффективных функция для работы c этими типами данных. Быстродействие кода Python c использованием NumPy в 50 раз быстрее кода на “чистом” Python1 и сравнимо с быстродействием коммерческого пакета матричной алгебры MATLAB. 1 http://scipy.github.io/old-wiki/pages/PerformancePython
  • 3. Импорт модуля Вариант 1 import numpy v = numpy . array ( [ 1 , 2 ] ) Вариант 2 (рекомендуется) import numpy as np v = np . array ( [ 1 , 2 ] ) Вариант 3 from numpy import * v = array ( [ 1 , 2 ] )
  • 4. array 1 import numpy as np 2 a = np . array ( [ [ 1 , 2 , 3] , [4 , 5 , 6 ] ] ) Свойства Размерность массива 1 >>> a . ndim 2 2 Размеры (по каждому измерению) 1 >>> a . shape 2 (2 , 3) Количество элементов (суммарное) 1 >>> a . size 2 6
  • 5. Тип данных массива 1 import numpy as np 2 a = np . array ( [ [ 1 , 2 , 3] , [4 , 5 , 6 ] ] ) 3 p r i n t ( a . dtype ) int64 1 a = np . array ( [ [ 1 . 0 , 2.0 , 3 . 0 ] , [ 4 . 0 , 5.0 , 6 . 0 ] ] ) 2 p r i n t ( a . dtype ) float64
  • 7. Генератор последовательностей arange( start, stop, step, dtype ) start: начальное значение stop: конечное значение (не включается в результат) step: шаг dtype: тип данных От минус 1.0 до 1.0 с шагом 0.2: 1 v = np . arange ( −1.0 , 1.0 , 0 . 2 ) 2 v array ( [ −1.00000000e+00 , −8.00000000e−01, −6.00000000e−01, −4.00000000e−01, −2.00000000e−01, −2.22044605e−16, 2.00000000e−01, 4.00000000e−01, 6.00000000e−01, 8.00000000e−01])
  • 8. Массив нулевых значений zeros( shape, dtype = float, order = ’C’ ) shape: размерность массива dtype: тип элементов массива order: порядок хранения элементов >>> np . zeros ( 5 ) array ( [ 0 . , 0 . , 0 . , 0 . , 0 . ] ) Матрица-столбец нулевых значений >>> np . zeros ( ( 2 , 1 ) ) array ( [ [ 0 . ] , [ 0 . ] ] )
  • 9. Массив единиц ones( shape, dtype = float, order = ’C’ ) shape: размерность массива dtype: тип элементов массива order: порядок хранения элементов >>> np . ones ( 5 ) array ( [ 1 . , 1 . , 1 . , 1 . , 1 . ] ) Матрица единиц >>> np . ones ( (3 , 2) ) array ( [ [ 1 . , 1 . ] , [ 1 . , 1 . ] , [ 1 . , 1 . ] ] )
  • 10. Сетка на заданном интервале linspace(start, stop, num=50, endpoint=True, retstep=False, ...) start: начальное значение stop: конечное значение num: количество элементов endpoint: если True, то последний элемент (end) включается в результат retstep: возвращать и вычисленное значение шага >>> np . linspace ( 0 . 0 , 2.0 , 4) array ( [ 0. , 0.66666667 , 1.33333333 , 2. ] ) Матрица единиц >>> np . linspace ( 0 . 0 , 2.0 , 4 , retstep = True ) ( array ( [ 0. , 0.66667 , 1.3333 , 2. ] ) , 0.66666)
  • 11. Функция от индексов массива 1 a = np . fromfunction ( lambda i , j : i == j , (3 , 3) ) 2 p r i n t ( a ) [ [ True , False , False ] , [ False , True , False ] , [ False , False , True ] ]
  • 12. Копирование Операция “присвоения” создает новую ссылку (псевдоним) на объект в памяти: 1 a = np . array ( [ [1 , 2] , [3 , 4] ] ) 2 b = a 3 p r i n t ( b i s a ) True Для создания копии массива используется метод copy(): 3 b = a . copy ( ) 4 p r i n t ( b i s a ) False
  • 14. Изменение размерности Функция reshape изменяет размерность массива, не меняя сами данные (новый “взгляд” на массив) 1 a = np . arange ( 6 ) 2 p r i n t ( a ) [0 1 2 3 4 5] 3 b = np . reshape ( a , (3 , 2) ) 4 p r i n t ( b ) 5 b [ 0 , 0 ] = 9 6 p r i n t ( a ) [ [ 0 1] [2 3] [4 5 ] ] [9 1 2 3 4 5]
  • 15. Изменение размерности Одна из размерностей может быть равна “-1”. В этом случае эта размерность вычисляется: 1 a = np . reshape ( np . arange ( 6 ) , (3 , −1) ) 2 p r i n t ( a ) [ [ 0 1] [2 3] [4 5 ] ]
  • 16. Плоский список Преобразование многомерного массива в “плоский” список (стиль Си: order=’C’ по умолчанию): 3 b = np . reshape ( a , −1) 4 p r i n t ( b ) [0 , 1 , 2 , 3 , 4 , 5]
  • 17. Плоский список Преобразование многомерного массива в “плоский” список (стиль Фортран: order=’F’) 3 b = np . reshape ( a , −1 , order = ’ F ’ ) 4 p r i n t ( b ) [0 , 2 , 4 , 1 , 3 , 5]
  • 18. Формирование плоского списка: ravel Преобразование многомерного массива в “плоский” список (стиль Си: order=’C’ по умолчанию): 1 a = np . reshape ( np . arange ( 6 ) , (3 , −1) ) 2 p r i n t ( a ) [ [ 0 1] [2 3] [4 5 ] ] 3 b = np . ravel ( a ) 4 p r i n t ( b ) [0 1 2 3 4 5] 5 b = np . ravel ( a , order = ’ F ’ ) 6 p r i n t ( b ) [0 2 4 1 3 5]
  • 19. vstack: склейка строк 1 a = np . array ( [ [ 1 , 2 ] , [ 3 , 4 ] ] ) 2 b = np . array ( [ [ 5 , 6 ] , [ 7 , 8 ] ] ) 3 c = np . vstack ( ( a , b ) ) 4 p r i n t ( c ) [ [ 1 2] [3 4] [5 6] [7 8 ] ]
  • 20. hstack: склейка столбцов 1 a = np . array ( [ [ 1 , 2 ] , [ 3 , 4 ] ] ) 2 b = np . array ( [ [ 5 , 6 ] , [ 7 , 8 ] ] ) 3 c = np . hstack ( ( a , b ) ) 4 p r i n t ( c ) [ [ 1 2 5 6] [3 4 7 8 ] ]
  • 21. hsplit: разделение на части по горизонтали 1 a = np . f l o o r ( 10 * np . random . random ( (2 ,12) ) ) 2 p r i n t ( a ) [ [ 6. 9. 2. 8. 6. 8 . ] [ 2. 1. 6. 8. 8. 6 . ] ] 3 np . h s p l i t ( a , 3 ) [ array ( [ [ 6 . , 9 . ] , [ 2 . , 1 . ] ] ) , array ( [ [ 2 . , 8 . ] , [ 6 . , 8 . ] ] ) , array ( [ [ 6 . , 8 . ] , [ 8 . , 6 . ] ] ) ]
  • 22. vsplit: разделение на части вертикали 1 a = np . f l o o r ( 10*np . random . random ( ( 4 , 2 ) ) ) 2 p r i n t ( a ) [ [ 5. 6 . ] [ 1. 5 . ] [ 5. 6 . ] [ 4. 3 . ] ] 3 np . v s p l i t ( a , 2 ) [ array ( [ [ 5 . , 6 . ] , [ 1 . , 5 . ] ] ) , array ( [ [ 5 . , 6 . ] , [ 4 . , 3 . ] ] ) ]
  • 24. Арифметические операции Арифметические операции выполняются поэлементно 1 a = np . array ( [ [ 1 , 2 ] , [ 3 , 4 ] ] ) 2 b = np . array ( [ [ 5 , 6 ] , [ 7 , 8 ] ] ) 3 c = a + b 4 p r i n t ( c ) [ [ 6 8] [10 12]] 1 c = 2 * ( a + b ) 2 p r i n t ( c ) [[12 16] [20 24]]
  • 25. Математические функции 1 a = np . reshape ( np . arange ( 6 ) , (2 , −1) ) 2 p r i n t ( a ) [ [ 0 1 2] [3 4 5 ] ] Возведение в степень: 3 p r i n t ( np . power ( a , 2 ) ) [ [ 0 , 1 , 4] , [ 9 , 16 , 25]] 3 p r i n t ( np . power ( a , a ) ) [ [ 1 1 4] [ 27 256 3125]]
  • 26. Математические функции 1 a = np . reshape ( np . arange ( 6 ) , (2 , −1) ) 2 p r i n t ( a ) [ [ 0 1 2] [3 4 5 ] ] 3 p r i n t ( np . exp ( a ) ) [ [ 1. 2.71828183 7.3890561 ] [ 20.08553692 54.59815003 148.4131591 ] ] 3 p r i n t ( a / ( a +1) ) [ [ 0. 0.5 0.66666667] [ 0.75 0.8 0.83333333]]
  • 27. dot: скалярное произведение 1 a = np . array ( [ [ 1 , 2 ] , [ 3 , 4 ] ] ) 2 b = np . array ( [ [ 5 , 6 ] , [ 7 , 8 ] ] ) 3 4 c = np . dot ( a , b ) 5 6 p r i n t ( c ) [[19 22] [43 50]]
  • 29. Индексация 1 a = np . arange ( 8 ) **2 2 p r i n t ( a ) [ 0 1 4 9 16 25 36 49] Индексация начинается с нуля. Третий элемент массива имеет индекс “2”: 2 p r i n t ( a [ 2 ] ) 4
  • 30. Срезы 1 a = np . arange ( 8 ) **2 2 p r i n t ( a ) [ 0 1 4 9 16 25 36 49] [ Начальное значение: граница: шаг ] 3 p r i n t ( a [ 2 : 6 : 2 ] ) 4 , 16
  • 31. Многомерные массивы 1 a = np . reshape ( np . arange ( 8 ) ,(2 , −1) ) 2 p r i n t ( a ) [ [ 0 1 2 3] [4 5 6 7 ] ] 3 p r i n t ( a [ 0 , 1 ] ) 1 4 p r i n t ( a [ : , 1 ] ) [1 5] 5 p r i n t ( a [ : , 1 : 3 ] ) [ [ 1 2] [5 6 ] ]
  • 32. Многомерные массивы 1 a = np . reshape ( np . arange ( 8 ) ,(2 , −1) ) 2 p r i n t ( a ) [ [ 0 1 2 3] [4 5 6 7 ] ] Последняя строка 3 p r i n t ( a [ −1 ,:] ) [4 5 6 7] Второй столбец с конца 4 p r i n t ( a [: , −2] ) [2 6]
  • 33. Использование ... вместо : 1 a = np . array ( [ [ [ 0 , 1 , 2] , 2 [ 10 , 12 , 1 3 ] ] , 3 [[100 ,101 ,102] , 4 [110 ,112 ,113]]]) 5 p r i n t ( a . shape ) (2 , 2 , 3) 3 p r i n t ( a [ 1 , . . . ] ) [ [ 0 , 1 , 2] , [ 10 , 12 , 13]] 4 p r i n t ( a [ . . . , 2 ] ) [ [ 2 13] [102 113]]
  • 34. Массив, как итератор При использовании массивов в конструкциях типа for ... in, итерация выполняется только по первой размерности: 1 a = np . array ( [ [ [ 0 , 1 , 2] , 2 [ 10 , 12 , 1 3 ] ] , 3 [[100 ,101 ,102] , 4 [110 ,112 ,113]]]) 5 6 f o r row in a : 7 p r i n t ( ’ Element : ’ , row ) Element : [ [ 0 1 2] [10 12 13]] Element : [[100 101 102] [110 112 113]]
  • 35. Массив, как итератор Итерация по всем элементам (последовательно по каждой размерности): 1 a = np . array ( [ [ [ 0 , 1 , 2] , [ 10 , 12 , 1 3 ] ] , 2 [[100 ,101 ,102] , [110 ,112 ,113]]]) 3 f o r i in np . ravel ( a ) : 4 p r i n t ( ’ Element ’ , i ) Element 0 Element 1 Element 2 Element 10 . . . Element 101 Element 102 Element 110 Element 112 Element 113
  • 36. Индексация при помощи массива индексов 1 a = np . arange ( 6 ) *2 2 i = np . array ( [ 1 , 3 , 5 , 2 ] ) 3 4 p r i n t ( a [ i ] ) [ 2 6 10 4] 5 i = np . array ( [ [1 , 3] , [5 , 2] ] ) 6 7 p r i n t ( a [ i ] ) [ [ 2 6] [10 4 ] ]
  • 37. Индексация при помощи массива типа bool 1 a = np . arange ( 6 ) *2 2 p r i n t ( a ) [ 0 2 4 6 8 10] Булев массив (каждый элемент сравнивается с 4): 3 p r i n t ( a>4 ) [ False False False True True True ] Использование массива для извлечения элементов: 4 p r i n t ( a [ a >4] ) [ 6 8 10]
  • 39. min, max, sum 1 a = np . array ( [ [1 , 2] , [3 , 4] ] ) Минимальное значение всего массива 2 p r i n t ( a . min ( ) ) 1 Минимальные значения столбцов 3 p r i n t ( a . min ( axis =0) ) [1 2] Минимальные значения строк 4 p r i n t ( a . min ( axis =1) ) [1 3]
  • 40. min, max, sum 1 a = np . array ( [ [1 , 2] , [3 , 4] ] ) Сумма всех значений 2 p r i n t ( a . sum ( ) ) 10 Сумма строк 3 p r i n t ( a . sum ( axis =0) ) [4 6] Сумма столбцов 4 p r i n t ( a . sum ( axis =1) ) [3 7]
  • 41. Среднее значение 1 a = np . array ( [ [1 , 2] , [3 , 4] ] ) Среднее значение всех элементов 2 p r i n t ( a . mean ( ) ) 2.5 Среднее по первой размерности (в столбцах) 3 p r i n t ( a . mean ( axis =0) ) [ 2 . 3 . ] Среднее по второй размерности (в строках) 4 p r i n t ( a . mean ( axis =1) ) [ 1.5 3 . 5 ]
  • 43. Чтение массива из текстового файла File1.txt # Results 1 23 5 2 65 6 4 55 4 Прочитать значения из файла File1.txt в массив res 1 res = np . loadtxt ( ” f i l e 1 . t x t ” , de l i mi t e r = ” ” ) 2 p r i n t ( res ) [ [ 1. 23. 5 . ] [ 2. 65. 6 . ] [ 4. 55. 4 . ] ]
  • 44. Чтение массива из файла: usecols File1.txt # Results 1 23 5 2 65 6 4 55 4 Прочитать значения из файла File1.txt в массив res столбцы с индексами 1 и 2: 1 res = np . loadtxt ( ” f i l e 1 . t x t ” , usecols = (1 , 2) ) 2 p r i n t ( res ) [ [ 23. 5 . ] [ 65. 6 . ] [ 55. 4 . ] ]
  • 45. Чтение массива из файла: skiprows File1.txt # Results 1 23 5 2 65 6 4 55 4 Прочитать значения из файла File1.txt в массив res, пропустив первые две строки 1 res = np . loadtxt ( ” f i l e 1 . t x t ” , skiprows = 2 ) 2 p r i n t ( res ) [ [ 2. 65. 6 . ] [ 4. 55. 4 . ] ]
  • 46. Запись массива в текстовый файл x = np . linspace (0 , np . pi , 5) . reshape ( ( 5 , 1 ) ) table = np . hstack ( ( x , np . sin ( x ) ) ) np . savetxt ( ’ sin . t x t ’ , table , de l i m it e r = ’ , ’ ) Содержимое файла sin.txt 0.000000000000000000e+00 ,0.000000000000000000e+00 7.853981633974482790e−01,7.071067811865474617e−01 1.570796326794896558e+00 ,1.000000000000000000e+00 2.356194490192344837e+00 ,7.071067811865475727e−01 3.141592653589793116e+00 ,1.224646799147353207e−16
  • 47. Форматирование вывода x = np . linspace (0 , np . pi , 5) . reshape ( ( 5 , 1 ) ) table = np . hstack ( ( x , np . sin ( x ) ) ) np . savetxt ( ’ sin . t x t ’ , table , fmt= ’ %7.4 f ’ ) Содержимое файла sin.txt 0.0000 0.0000 0.7854 0.7071 1.5708 1.0000 2.3562 0.7071 3.1416 0.0000
  • 48. Форматирование вывода x = np . linspace (0 , np . pi , 5) . reshape ( ( 5 , 1 ) ) table = np . hstack ( ( x , np . sin ( x ) ) ) np . savetxt ( ’ sin . t x t ’ , table , fmt = ’ %9.4g ’ , header = ’−−data s t a r t −− ’ , footer = ’−− data end −− ’ ) ) Содержимое файла sin.txt # −−data s t a r t −− 0 0 0.7854 0.7071 1.571 1 2.356 0.7071 3.142 1.225e−16 # −− data end −−
  • 49. Справка 1 Quickstart tutorial https://docs.scipy.org/doc/numpy-dev/user/quickstart.html 2 Numpy User Guide https://docs.scipy.org/doc/numpy/user/ 3 Numpy Reference Guide https://docs.scipy.org/doc/numpy/reference/