ΠΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, ΡΡΠΎ ΠΈΠΌΠ΅Π½Π½ΠΎ ΡΡΠ° Π»Π΅ΠΊΡΠΈΡ ΠΏΡΠΈΠ²Π΅Π΄Π΅Ρ ΡΠ»ΡΡΠ°ΡΠ΅Π»Π΅ΠΉ ΠΊ ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΡ ΠΠΠ, ΠΏΡΠΈΠ³ΠΎΠ΄Π½ΠΎΠΌΡ ΠΈ ΡΠ΄ΠΎΠ±Π½ΠΎΠΌΡ Π΄Π»Ρ ΠΏΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΎΠΉ ΡΠ°Π±ΠΎΡΡ.
Π‘ΡΡΠ»ΠΊΠΈ
ΠΡΠ²ΠΈΠ΄ ΠΠ΅ΡΡΡ http://www-106.ibm.com/developerworks/linux/library/l-pymeta.html
ΠΠ΅ΠΊΡΠΈΡ #5: Π§ΠΈΡΠ»Π΅Π½Π½ΡΠ΅ Π°Π»Π³ΠΎΡΠΈΡΠΌΡ. ΠΠ°ΡΡΠΈΡΠ½ΡΠ΅ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΡ.
Π Π΄Π°Π½Π½ΠΎΠΉ Π»Π΅ΠΊΡΠΈΠΈ ΡΠ°ΡΡΠΌΠ°ΡΡΠΈΠ²Π°Π΅ΡΡΡ ΠΏΠ°ΠΊΠ΅Ρ Numeric Π΄Π»Ρ ΠΎΡΡΡΠ΅ΡΡΠ²Π»Π΅Π½ΠΈΡ ΡΠΈΡΠ»Π΅Π½Π½ΡΡ ΡΠ°ΡΡΠ΅ΡΠΎΠ² ΠΈ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΌΠ°ΡΡΠΈΡΠ½ΡΡ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΠΉ, ΠΏΡΠΈΠ²ΠΎΠ΄ΠΈΡΡΡ ΠΎΠ±Π·ΠΎΡ Π΄ΡΡΠ³ΠΈΡ ΠΏΠ°ΠΊΠ΅ΡΠΎΠ² Π΄Π»Ρ Π½Π°ΡΡΠ½ΡΡ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΠΉ.
Numeric Python β ΡΡΠΎ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΌΠΎΠ΄ΡΠ»Π΅ΠΉ Π΄Π»Ρ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΠΉ Ρ ΠΌΠ½ΠΎΠ³ΠΎΠΌΠ΅ΡΠ½ΡΠΌΠΈ ΠΌΠ°ΡΡΠΈΠ²Π°ΠΌΠΈ, Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΡ Π΄Π»Ρ ΠΌΠ½ΠΎΠ³ΠΈΡ ΡΠΈΡΠ»Π΅Π½Π½ΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ. ΠΠΎΠ΄ΡΠ»Ρ Numeric Π²Π½ΠΎΡΠΈΡ Π² Python Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ ΡΠ°ΠΊΠΈΡ ΠΏΠ°ΠΊΠ΅ΡΠΎΠ² ΠΈ ΡΠΈΡΡΠ΅ΠΌ ΠΊΠ°ΠΊ MatLab, Octave (Π°Π½Π°Π»ΠΎΠ³ MatLab), APL, J, S+, IDL. ΠΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΠΈ Π½Π°ΠΉΠ΄ΡΡ Numeric Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ ΠΏΡΠΎΡΡΡΠΌ ΠΈ ΡΠ΄ΠΎΠ±Π½ΡΠΌ. Π‘ΡΠΎΠΈΡ Π·Π°ΠΌΠ΅ΡΠΈΡΡ, ΡΡΠΎ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ Python (ΡΠ²ΡΠ·Π°Π½Π½ΡΠ΅ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΡΡΠ΅Π·ΠΎΠ²) Π±ΡΠ»ΠΈ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΠΎ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ°Π½Ρ Π΄Π»Ρ Numeric.
Numeric Python ΠΈΠΌΠ΅Π΅Ρ ΡΡΠ΅Π΄ΡΡΠ²Π° Π΄Π»Ρ:
β’ ΠΌΠ°ΡΡΠΈΡΠ½ΡΡ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΠΉ LinearAlgebra;
β’ Π±ΡΡΡΡΠΎΠ³ΠΎ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ Π€ΡΡΡΠ΅ FFT;
β’ ΡΠ°Π±ΠΎΡΡ Ρ Π½Π΅Π΄ΠΎΡΡΠ°ΡΡΠΈΠΌΠΈ ΡΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½ΡΠ°Π»ΡΠ½ΡΠΌΠΈ Π΄Π°Π½Π½ΡΠΌΠΈ MA;
β’ ΡΡΠ°ΡΠΈΡΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΠΌΠΎΠ΄Π΅Π»ΠΈΡΠΎΠ²Π°Π½ΠΈΡ RNG;
β’ ΡΠΌΡΠ»ΡΡΠΈΠΈ Π±Π°Π·ΠΎΠ²ΡΡ ΡΡΠ½ΠΊΡΠΈΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ MatLab.
ΠΠΎΠ΄ΡΠ»Ρ Numeric
ΠΠΎΠ΄ΡΠ»Ρ Numeric ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ ΠΏΠΎΠ»Π½ΠΎΡΠ΅Π½Π½ΡΠΉ ΡΠΈΠΏβΠΌΠ°ΡΡΠΈΠ² ΠΈ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ Π±ΠΎΠ»ΡΡΠΎΠ΅ ΡΠΈΡΠ»ΠΎ ΡΡΠ½ΠΊΡΠΈΠΉ Π΄Π»Ρ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ Ρ ΠΌΠ°ΡΡΠΈΠ²Π°ΠΌΠΈ. ΠΠ°ΡΡΠΈΠ² β ΡΡΠΎ Π½Π°Π±ΠΎΡ ΠΎΠ΄Π½ΠΎΡΠΎΠ΄Π½ΡΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ², Π΄ΠΎΡΡΡΠΏΠ½ΡΡ ΠΏΠΎ ΠΈΠ½Π΄Π΅ΠΊΡΠ°ΠΌ. ΠΠ°ΡΡΠΈΠ²Ρ ΠΌΠΎΠ΄ΡΠ»Ρ Numeric ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ ΠΌΠ½ΠΎΠ³ΠΎΠΌΠ΅ΡΠ½ΡΠΌΠΈ, ΡΠΎ Π΅ΡΡΡ ΠΈΠΌΠ΅ΡΡ Π±ΠΎΠ»Π΅Π΅ ΠΎΠ΄Π½ΠΎΠΉ ΡΠ°Π·ΠΌΠ΅ΡΠ½ΠΎΡΡΠΈ.
Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΌΠ°ΡΡΠΈΠ²Π°
ΠΠ»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΌΠ°ΡΡΠΈΠ²Π° ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΡΠ½ΠΊΡΠΈΡ array() Ρ ΡΠΊΠ°Π·Π°Π½ΠΈΠ΅ΠΌ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ³ΠΎ ΠΌΠ°ΡΡΠΈΠ²Π° (Π² Π²ΠΈΠ΄Π΅ Π²Π»ΠΎΠΆΠ΅Π½Π½ΡΡ ΡΠΏΠΈΡΠΊΠΎΠ²) ΠΈ ΡΠΈΠΏΠ°. Π€ΡΠ½ΠΊΡΠΈΡ array() Π΄Π΅Π»Π°Π΅Ρ ΠΊΠΎΠΏΠΈΡ, Π΅ΡΠ»ΠΈ Π΅Π΅ Π°ΡΠ³ΡΠΌΠ΅Π½Ρ β ΠΌΠ°ΡΡΠΈΠ². Π€ΡΠ½ΠΊΡΠΈΡ asarray() ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Π°Π½Π°Π»ΠΎΠ³ΠΈΡΠ½ΠΎ, Π½ΠΎ Π½Π΅ ΡΠΎΠ·Π΄Π°Π΅Ρ Π½ΠΎΠ²ΠΎΠ³ΠΎ ΠΌΠ°ΡΡΠΈΠ²Π°, ΠΊΠΎΠ³Π΄Π° Π΅Π΅ Π°ΡΠ³ΡΠΌΠ΅Π½Ρ ΡΠΆΠ΅ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΌΠ°ΡΡΠΈΠ²ΠΎΠΌ:
>>> from Numeric import *
>>> print array([[1, 2], [3, 4], [5, 6]])
[[1 2]
[3 4]
[5 6]]
>>> print array([[1, 2, 3], [4, 5, 6]], Float)
[[ 1. 2. 3.]
[ 4. 5. 6.]]
>>> print array([78, 85, 77, 69, 82, 73, 67], 'c')
[N U M E R I C]
Π ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² ΠΌΠ°ΡΡΠΈΠ²Π° ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ ΡΠΈΠΏΡ: Int8βInt32, UnsignedInt8βUnsignedInt32, Float8βFloat64, Complex8βComplex64 ΠΈ PyObject. Π§ΠΈΡΠ»Π° 8, 16, 32 ΠΈ 64 ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°ΡΡ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ Π±ΠΈΡΠΎΠ² Π΄Π»Ρ Ρ ΡΠ°Π½Π΅Π½ΠΈΡ Π²Π΅Π»ΠΈΡΠΈΠ½Ρ. Π’ΠΈΠΏΡ Int, UnsignedInteger, Float ΠΈ Complex ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡ Π½Π°ΠΈΠ±ΠΎΠ»ΡΡΠΈΠΌ ΠΏΡΠΈΠ½ΡΡΡΠΌ Π½Π° Π΄Π°Π½Π½ΠΎΠΉ ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡΠΌ. Π ΠΌΠ°ΡΡΠΈΠ²Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ°ΠΊΠΆΠ΅ Ρ ΡΠ°Π½ΠΈΡΡ ΡΡΡΠ»ΠΊΠΈ Π½Π° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ»ΡΠ½ΡΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΡ.
ΠΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΡΠ°Π·ΠΌΠ΅ΡΠ½ΠΎΡΡΠ΅ΠΉ ΠΈ Π΄Π»ΠΈΠ½Π° ΠΌΠ°ΡΡΠΈΠ²Π° ΠΏΠΎ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΎΡΠΈ Π½Π°Π·ΡΠ²Π°ΡΡΡΡ ΡΠΎΡΠΌΠΎΠΉ ΠΌΠ°ΡΡΠΈΠ²Π° (shape). ΠΠΎΡΡΡΠΏ ΠΊ ΡΠΎΡΠΌΠ΅ ΠΌΠ°ΡΡΠΈΠ²Π° ΡΠ΅Π°Π»ΠΈΠ·ΡΠ΅ΡΡΡ ΡΠ΅ΡΠ΅Π· Π°ΡΡΠΈΠ±ΡΡ shape:
>>> from Numeric import *
>>> a = array(range(15), Int)
>>> print a.shape
(15,)
>>> print a
[ 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14]
>>> a.shape = (3, 5)
>>> print a.shape
(3, 5)
>>> print a
[[ 0 1 2 3 4]
[ 5 6 7 8 9]
[10 11 12 13 14]]
ΠΠ΅ΡΠΎΠ΄Ρ ΠΌΠ°ΡΡΠΈΠ²ΠΎΠ²
ΠΡΠΈΠ΄Π°ΡΡ Π½ΡΠΆΠ½ΡΡ ΡΠΎΡΠΌΡ ΠΌΠ°ΡΡΠΈΠ²Ρ ΠΌΠΎΠΆΠ½ΠΎ ΡΡΠ½ΠΊΡΠΈΠ΅ΠΉ Numeric.reshape(). ΠΡΠ° ΡΡΠ½ΠΊΡΠΈΡ ΡΡΠ°Π·Ρ ΡΠΎΠ·Π΄Π°Π΅Ρ ΠΎΠ±ΡΠ΅ΠΊΡβΠΌΠ°ΡΡΠΈΠ² Π½ΡΠΆΠ½ΠΎΠΉ ΡΠΎΡΠΌΡ ΠΈΠ· ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ.
>>> import Numeric
>>> print Numeric.reshape("Π°Π±ΡΠ°ΠΊΠ°Π΄Π°Π±Ρ", (5, -1))
[[Π° Π±]
[Ρ Π°]
[ΠΊ Π°]
[Π΄ Π°]
[Π± Ρ]]
Π ΡΡΠΎΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ β1 Π² ΡΠΊΠ°Π·Π°Π½ΠΈΠΈ ΡΠΎΡΠΌΡ Π³ΠΎΠ²ΠΎΡΠΈΡ ΠΎ ΡΠΎΠΌ, ΡΡΠΎ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠ΅Π΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ½ΠΎ Π²ΡΡΠΈΡΠ»ΠΈΡΡ. ΠΠ±ΡΠ΅Π΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² ΠΌΠ°ΡΡΠΈΠ²Π° ΠΈΠ·Π²Π΅ΡΡΠ½ΠΎ (10), ΠΏΠΎΡΡΠΎΠΌΡ Π΄Π»ΠΈΠ½Ρ Π²Π΄ΠΎΠ»Ρ ΠΎΠ΄Π½ΠΎΠΉ ΠΈΠ· ΡΠ°Π·ΠΌΠ΅ΡΠ½ΠΎΡΡΠ΅ΠΉ Π·Π°Π΄Π°Π²Π°ΡΡ Π½Π΅ ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΠΎ.
Π§Π΅ΡΠ΅Π· Π°ΡΡΠΈΠ±ΡΡ flat ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΠΎΠ΄Π½ΠΎΠΌΠ΅ΡΠ½ΠΎΠ΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΌΠ°ΡΡΠΈΠ²Π°:
>>> a = array([[1, 2], [3, 4]])
>>> b = a.flat
>>> b
array([1, 2, 3, 4])
>>> b[0] = 9
>>> b
array([9, 2, 3, 4])
>>> a
array([[9, 2],
[3, 4]])
Π‘Π»Π΅Π΄ΡΠ΅Ρ Π·Π°ΠΌΠ΅ΡΠΈΡΡ, ΡΡΠΎ ΡΡΠΎ Π½ΠΎΠ²ΡΠΉ Π²ΠΈΠ΄ ΡΠΎΠ³ΠΎ ΠΆΠ΅ ΠΌΠ°ΡΡΠΈΠ²Π°, ΠΏΠΎΡΡΠΎΠΌΡ ΠΏΡΠΈΡΠ²Π°ΠΈΠ²Π°Π½ΠΈΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ Π΅Π³ΠΎ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°ΠΌ ΠΏΡΠΈΠ²ΠΎΠ΄ΠΈΡ ΠΊ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡΠΌ Π² ΠΈΡΡ ΠΎΠ΄Π½ΠΎΠΌ ΠΌΠ°ΡΡΠΈΠ²Π΅.
Π€ΡΠ½ΠΊΡΠΈΡ Numeric.resize() ΠΏΠΎΡ ΠΎΠΆΠ° Π½Π° Numeric.reshape, Π½ΠΎ ΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΠ΄ΡΡΡΠ°ΠΈΠ²Π°ΡΡ ΡΠΈΡΠ»ΠΎ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ²:
>>> print Numeric.resize("NUMERIC", (3, 2))
[[N U]
[M E]
[R I]]
>>> print Numeric.resize("NUMERIC", (3, 4))
[[N U M E]
[R I C N]
[U M E R]]
Π€ΡΠ½ΠΊΡΠΈΡ Numeric.zeros() ΠΏΠΎΡΠΎΠΆΠ΄Π°Π΅Ρ ΠΌΠ°ΡΡΠΈΠ² ΠΈΠ· ΠΎΠ΄Π½ΠΈΡ Π½ΡΠ»Π΅ΠΉ, Π° Numeric.ones() β ΠΈΠ· ΠΎΠ΄Π½ΠΈΡ Π΅Π΄ΠΈΠ½ΠΈΡ. ΠΠ΄ΠΈΠ½ΠΈΡΠ½ΡΡ ΠΌΠ°ΡΡΠΈΡΡ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡΡΠΈΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ Numeric.identity(n):
>>> print Numeric.zeros((2,3))
[[0 0 0]
[0 0 0]]
>>> print Numeric.ones((2,3))
[[1 1 1]
[1 1 1]]
>>> print Numeric.identity(4)
[[1 0 0 0]
[0 1 0 0]
[0 0 1 0]
[0 0 0 1]]
ΠΠ»Ρ ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΌΠ°ΡΡΠΈΠ²ΠΎΠ² ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΌΠ΅ΡΠΎΠ΄ copy():
>>> import Numeric
>>> a = Numeric.arrayrange(9)
>>> a.shape = (3, 3)
>>> print a
[[0 1 2]
[3 4 5]
[6 7 8]]
>>> a1 = a.copy()
>>> a1[0, 1] = -1 # ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ Π½Π°Π΄ ΠΊΠΎΠΏΠΈΠ΅ΠΉ
>>> print a
[[0 1 2]
[3 4 5]
[6 7 8]]
ΠΠ°ΡΡΠΈΠ² ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡΠ΅Π²ΡΠ°ΡΠΈΡΡ ΠΎΠ±ΡΠ°ΡΠ½ΠΎ Π² ΡΠΏΠΈΡΠΎΠΊ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΌΠ΅ΡΠΎΠ΄Π° tolist():
>>> a.tolist()
[[0, 1, 2], [3, 4, 5], [6, 7, 8]]
Π‘ΡΠ΅Π·Ρ
ΠΠ±ΡΠ΅ΠΊΡΡβΠΌΠ°ΡΡΠΈΠ²Ρ Numeric ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡ ΡΠ°ΡΡΠΈΡΠ΅Π½Π½ΡΠΉ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡ Π²ΡΠ΄Π΅Π»Π΅Π½ΠΈΡ ΡΡΠ΅Π·Π°. Π‘Π»Π΅Π΄ΡΡΡΠΈΠ΅ ΠΏΡΠΈΠΌΠ΅ΡΡ ΠΈΠ»Π»ΡΡΡΡΠΈΡΡΡΡ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠ΅ Π²Π°ΡΠΈΠ°Π½ΡΡ Π·Π°ΠΏΠΈΡΠΈ ΡΡΠ΅Π·ΠΎΠ². Π€ΡΠ½ΠΊΡΠΈΡ Numeric.arrayrange() ΡΠ²Π»ΡΠ΅ΡΡΡ Π°Π½Π°Π»ΠΎΠ³ΠΎΠΌ range() Π΄Π»Ρ ΠΌΠ°ΡΡΠΈΠ²ΠΎΠ².
>>> import Numeric
>>> a = Numeric.arrayrange(24) + 1
>>> a.shape = (4, 6)
>>> print a # ΠΈΡΡ ΠΎΠ΄Π½ΡΠΉ ΠΌΠ°ΡΡΠΈΠ²
[[ 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 a[1,2] # ΡΠ»Π΅ΠΌΠ΅Π½Ρ 1,2
9
>>> print a[1,:] # ΡΡΡΠΎΠΊΠ° 1
[ 7 8 9 10 11 12]
>>> print a[1] # ΡΠΎΠΆΠ΅ ΡΡΡΠΎΠΊΠ° 1
[ 7 8 9 10 11 12]
>>> print a[:,1] # ΡΡΠΎΠ»Π±Π΅Ρ 1
[ 2 8 14 20]
>>> print a[-2,:] # ΠΏΡΠ΅Π΄ΠΏΠΎΡΠ»Π΅Π΄Π½ΡΡ ΡΡΡΠΎΠΊΠ°
[13 14 15 16 17 18]
>>> print a[0:2,1:3] # ΠΎΠΊΠ½ΠΎ 2x2
[[2 3]
[8 9]]
>>> print a[1,::3] # ΠΊΠ°ΠΆΠ΄ΡΠΉ ΡΡΠ΅ΡΠΈΠΉ ΡΠ»Π΅ΠΌΠ΅Π½Ρ ΡΡΡΠΎΠΊΠΈ 1
[ 7 10]
>>> print a[:,:: -1] # ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ ΡΡΡΠΎΠΊ Π² ΠΎΠ±ΡΠ°ΡΠ½ΠΎΠΌ ΠΏΠΎΡΡΠ΄ΠΊΠ΅
[[ 6 5 4 3 2 1]
[12 11 10 9 8 7]
[18 17 16 15 14 13]
[24 23 22 21 20 19]]
Π‘ΡΠ΅Π· Π½Π΅ ΠΊΠΎΠΏΠΈΡΡΠ΅Ρ ΠΌΠ°ΡΡΠΈΠ² (ΠΊΠ°ΠΊ ΡΡΠΎ ΠΈΠΌΠ΅Π΅Ρ ΠΌΠ΅ΡΡΠΎ ΡΠΎ ΡΠΏΠΈΡΠΊΠ°ΠΌΠΈ), Π° Π΄Π°Π΅Ρ Π΄ΠΎΡΡΡΠΏ ΠΊ Π½Π΅ΠΊΠΎΡΠΎΡΠΎΠΉ ΡΠ°ΡΡΠΈ ΠΌΠ°ΡΡΠΈΠ²Π°. ΠΠ°Π»Π΅Π΅ Π² ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΠΌΠ΅Π½ΡΠ΅ΡΡΡ Π½Π° 0 ΠΊΠ°ΠΆΠ΄ΡΠΉ ΡΡΠ΅ΡΠΈΠΉ ΡΠ»Π΅ΠΌΠ΅Π½Ρ ΡΡΡΠΎΠΊΠΈ 1:
>>> a[1,::3] = Numeric.array([0,0])
>>> print a
[[ 1 2 3 4 5 6]
[ 0 8 9 0 11 12]
[13 14 15 16 17 18]
[19 20 21 22 23 24]]
Π ΡΠ»Π΅Π΄ΡΡΡΠΈΡ ΠΏΡΠΈΠΌΠ΅ΡΠ°Ρ Π½Π°Ρ ΠΎΠ΄ΠΈΡ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ ΡΠ΅Π΄ΠΊΠ°Ρ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠ°Ρ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΡ: ΡΡΠ΅Π· Ρ ΠΌΠ½ΠΎΠ³ΠΎΡΠΎΡΠΈΠ΅ΠΌ (Ellipsis). ΠΠ½ΠΎΠ³ΠΎΡΠΎΡΠΈΠ΅ ΡΡΠ°Π²ΠΈΡΡΡ Π΄Π»Ρ ΡΠΊΠ°Π·Π°Π½ΠΈΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ»ΡΠ½ΠΎΠ³ΠΎ ΡΠΈΡΠ»Π° ΠΏΡΠΎΠΏΡΡΠ΅Π½Π½ΡΡ ΡΠ°Π·ΠΌΠ΅ΡΠ½ΠΎΡΡΠ΅ΠΉ (:,:,...,:):
>>> import Numeric
>>> a = Numeric.arrayrange(24) + 1
>>> a.shape = (2,2,2,3)
>>> print a
[[[[ 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 a[0,...] # 0βΠΉ Π±Π»ΠΎΠΊ
[[[ 1 2 3]
[ 4 5 6]]
[[ 7 8 9]
[10 11 12]]]
>>> print a[0,:,:,0] # ΡΡΠ΅Π· ΠΏΠΎ ΠΏΠ΅ΡΠ²ΠΎΠΉ ΠΈ ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅ΠΉ ΡΠ°Π·ΠΌΠ΅ΡΠ½ΠΎΡΡΡΠΌ
[[ 1 4]
[ 7 10]]
>>> print a[0,...,0] # ΡΠΎ ΠΆΠ΅, Π½ΠΎ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΠΌΠ½ΠΎΠ³ΠΎΡΠΎΡΠΈΡ
[[ 1 4]
[ 7 10]]
Π£Π½ΠΈΠ²Π΅ΡΡΠ°Π»ΡΠ½ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ
ΠΠΎΠ΄ΡΠ»Ρ Numeric ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ Π½Π°Π±ΠΎΡ ΡΡΠ½ΠΊΡΠΈΠΉ Π΄Π»Ρ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΡ ΠΊ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°ΠΌ ΠΌΠ°ΡΡΠΈΠ²Π°. Π€ΡΠ½ΠΊΡΠΈΠΈ ΠΏΡΠΈΠΌΠ΅Π½ΠΈΠΌΡ Π½Π΅ ΡΠΎΠ»ΡΠΊΠΎ ΠΊ ΠΌΠ°ΡΡΠΈΠ²Π°ΠΌ, Π½ΠΎ ΠΈ ΠΊ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΡΠΌ (ΠΊ ΡΠΎΠΆΠ°Π»Π΅Π½ΠΈΡ, ΠΈΡΠ΅ΡΠ°ΡΠΎΡΡ ΠΏΠΎΠΊΠ° Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡΡΡ). Π ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅ ΠΏΠΎΠ»ΡΡΠ°ΡΡΡΡ ΠΌΠ°ΡΡΠΈΠ²Ρ.
Π€ΡΠ½ΠΊΡΠΈΡ ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅ add(x, y), subtract(x, y) Π‘Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΈ Π²ΡΡΠΈΡΠ°Π½ΠΈΠ΅ multiply(x, y), divide(x, y) Π£ΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΈ Π΄Π΅Π»Π΅Π½ΠΈΠ΅ remainder(x, y), fmod(x, y) ΠΠΎΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΠΎΡΡΠ°ΡΠΊΠ° ΠΎΡ Π΄Π΅Π»Π΅Π½ΠΈΡ (Π΄Π»Ρ ΡΠ΅Π»ΡΡ ΡΠΈΡΠ΅Π» ΠΈ ΡΠΈΡΠ΅Π» Ρ ΠΏΠ»Π°Π²Π°ΡΡΠ΅ΠΉ Π·Π°ΠΏΡΡΠΎΠΉ) power(x) ΠΠΎΠ·Π²Π΅Π΄Π΅Π½ΠΈΠ΅ Π² ΡΡΠ΅ΠΏΠ΅Π½Ρ sqrt(x) ΠΠ·Π²Π»Π΅ΡΠ΅Π½ΠΈΠ΅ ΠΊΠΎΡΠ½Ρ ΠΊΠ²Π°Π΄ΡΠ°ΡΠ½ΠΎΠ³ΠΎ negative(x), absolute(x), fabs(x) Π‘ΠΌΠ΅Π½Π° Π·Π½Π°ΠΊΠ° ΠΈ Π°Π±ΡΠΎΠ»ΡΡΠ½ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ceil(x), floor(x) ΠΠ°ΠΈΠΌΠ΅Π½ΡΡΠ΅Π΅ (Π½Π°ΠΈΠ±ΠΎΠ»ΡΡΠ΅Π΅) ΡΠ΅Π»ΠΎΠ΅, Π±ΠΎΠ»ΡΡΠ΅Π΅ (ΠΌΠ΅Π½ΡΡΠ΅Π΅) ΠΈΠ»ΠΈ ΡΠ°Π²Π½ΠΎΠ΅ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΡ hypot(x, y) ΠΠ»ΠΈΠ½Π° Π³ΠΈΠΏΠΎΡΠ΅Π½ΡΠ·Ρ (Π΄Π°Π½Ρ Π΄Π»ΠΈΠ½Ρ Π΄Π²ΡΡ ΠΊΠ°ΡΠ΅ΡΠΎΠ²) sin(x), cos(x), tan(x) Π’ΡΠΈΠ³ΠΎΠ½ΠΎΠΌΠ΅ΡΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ arcsin(x), arccos(x), arctan(x) ΠΠ±ΡΠ°ΡΠ½ΡΠ΅ ΡΡΠΈΠ³ΠΎΠ½ΠΎΠΌΠ΅ΡΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ arctan2(x, y) ΠΡΠΊΡΠ°Π½Π³Π΅Π½Ρ ΠΎΡ ΡΠ°ΡΡΠ½ΠΎΠ³ΠΎ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ° sinh(x), cosh(x), tanh(x) ΠΠΈΠΏΠ΅ΡΠ±ΠΎΠ»ΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ arcsinh(x), arccosh(x), arctanh(x) ΠΠ±ΡΠ°ΡΠ½ΡΠ΅ Π³ΠΈΠΏΠ΅ΡΠ±ΠΎΠ»ΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ exp(x) ΠΠΊΡΠΏΠΎΠ½Π΅Π½ΡΠ° (ex) log(x), log10(x) ΠΠ°ΡΡΡΠ°Π»ΡΠ½ΡΠΉ ΠΈ Π΄Π΅ΡΡΡΠΈΡΠ½ΡΠΉ Π»ΠΎΠ³Π°ΡΠΈΡΠΌΡ maximum(x, y), minimum(x, y) ΠΠ°ΠΊΡΠΈΠΌΡΠΌ ΠΈ ΠΌΠΈΠ½ΠΈΠΌΡΠΌ conjugate(x) Π‘ΠΎΠΏΡΡΠΆΠ΅Π½ΠΈΠ΅ (Π΄Π»Ρ ΠΊΠΎΠΌΠΏΠ»Π΅ΠΊΡΠ½ΡΡ ΡΠΈΡΠ΅Π») equal(x, y), not_equal(x, y) Π Π°Π²Π½ΠΎ, Π½Π΅ ΡΠ°Π²Π½ΠΎ greater(x, y), greater_equal(x, y) ΠΠΎΠ»ΡΡΠ΅, Π±ΠΎΠ»ΡΡΠ΅ ΠΈΠ»ΠΈ ΡΠ°Π²Π½ΠΎ less(x, y), less_equal(x, y) ΠΠ΅Π½ΡΡΠ΅, ΠΌΠ΅Π½ΡΡΠ΅ ΠΈΠ»ΠΈ ΡΠ°Π²Π½ΠΎ logical_and(x, y), logical_or(x, y) ΠΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΈΠ΅ Π, ΠΠΠ logical_xor(x, y) ΠΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΎΠ΅ ΠΈΡΠΊΠ»ΡΡΠ°ΡΡΠ΅Π΅ ΠΠΠ logical_not(x) ΠΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΠΠ bitwise_and(x, y), bitwise_or(x, y) ΠΠΎΠ±ΠΈΡΠΎΠ²ΡΠ΅ Π, ΠΠΠ bitwise_xor(x, y) ΠΠΎΠ±ΠΈΡΠΎΠ²ΠΎΠ΅ ΠΈΡΠΊΠ»ΡΡΠ°ΡΡΠ΅Π΅ ΠΠΠ invert(x) ΠΠΎΠ±ΠΈΡΠΎΠ²Π°Ρ ΠΈΠ½Π²Π΅ΡΡΠΈΡ left_shift(x, n), right_shift(x, n) ΠΠΎΠ±ΠΈΡΠΎΠ²ΡΠ΅ ΡΠ΄Π²ΠΈΠ³ΠΈ Π²Π»Π΅Π²ΠΎ ΠΈ Π²ΠΏΡΠ°Π²ΠΎ Π½Π° n Π±ΠΈΡΠΎΠ²ΠΠ΅ΡΠ΅ΡΠΈΡΠ»Π΅Π½Π½ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ ΡΠ²Π»ΡΡΡΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΠ°ΠΌΠΈ ΡΠΈΠΏΠ° ufunc ΠΈ ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡΡΡ ΠΊ ΠΌΠ°ΡΡΠΈΠ²Π°ΠΌ ΠΏΠΎΡΠ»Π΅ΠΌΠ΅Π½ΡΠ½ΠΎ. ΠΡΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΈΠΌΠ΅ΡΡ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΡΠ΅ ΠΌΠ΅ΡΠΎΠ΄Ρ: