±à¼ÍƼö: |
±¾ÎÄÀ´Ô´csdn£¬±¾ÎÄÖ÷Òª½éÉÜ»¨Ê½Ë÷ÒýºÍ²¼¶ûÐÍË÷ÒýÉæ¼°µ½¸´ÖƲÙ×÷£¬ÆäËûµÄ¶¼ÊÇ·µ»ØÔ´Êý¾ÝµÄÊÓͼ¡£ |
|

NumPy£¨Numerical PythonµÄ»ù´¡£©ÊǸßÐÔÄÜ¿ÆÑ§¼ÆËãºÍÊý¾Ý·ÖÎöµÄ»ù´¡°ü¡£Æä²¿·Ö¹¦ÄÜÈçÏ£º
1.ndarray£¬Ò»¸ö¾ßÓÐʸÁ¿ËãÊõÔËËãºÍ¸´Ôӹ㲥ÄÜÁ¦µÄ¿ìËÙÇÒ½ÚÊ¡¿Õ¼äµÄ¶àάÊý×é¡£
2.ÓÃÓÚ¶ÔÊý×éÊý¾Ý½øÐпìËÙÔËËãµÄ±ê×¼Êýѧº¯Êý£¨ÎÞÐò±àдѻ·£©¡£
3.ÓÃÓÚ¶Áд´ÅÅÌÊý¾ÝµÄ¹¤¾ß¼°ÆäÓÃÓÚ²Ù×÷ÄÚ´æÓ³ÉäÎļþµÄ¹¤¾ß¡£
4.ÏßÐÔ´úÊý¡¢Ëæ»úÊýÉú³ÉÒÔ¼°¸µÀïÒ¶±ä»»¹¦ÄÜ¡£
5.ÓÃÓÚ¼¯³ÉÓÉC¡¢C++¡¢FortranµÈÓïÑÔ±àдµÄ´úÂëµÄ¹¤¾ß¡£
´´½¨ndarray
´´½¨Êý×é×î¼òµ¥µÄ°ì·¨¾ÍÊÇʹÓÃarrayº¯Êý¡£Ëü½ÓÊÜÒ»ÇÐÐòÁÐÐ͵ĶÔÏ󣨰üÀ¨ÆäËûÊý×飩£¬È»ºó²úÉúÒ»¸öеĺ¬Óд«ÈëÊý¾ÝµÄNumPyÊý×é¡£
ÁбíµÄת»»£º
data1
= [6,7.5,8,0,1]
arr1 = np.array(data1)
# array([ 6. , 7.5, 8. , 0. , 1. ]) |
ǶÌ×ÐòÁУ¨±ÈÈçÓÉÒ»×éµÈ³¤Áбí×é³ÉµÄÁÐ±í£©½«»á±»×ªÎªÒ»¸ö¶àάÊý×飺
data2
= [[1,2,3,4],[5,6,7,8]]
arr2 = np.array(data2)
# array([[1, 2, 3, 4],
# [5, 6, 7, 8]]) |
data2ÊÇÒ»¸ölist of lists, ËùÒÔarr2ά¶ÈΪ2¡£ÎÒÃÇÄÜÓÃndimºÍshapeÊôÐÔÀ´È·ÈÏһϣº
³ý·ÇÖ÷¶¯ÉùÃ÷£¬·ñÔònp.array»á×Ô¶¯¸ødata´îÅäÊʺϵÄÀàÐÍ£¬²¢±£´æÔÚdtypeÀ
arr1.dtype
# dtype('float64') |
arr2.dtype
# dtype('int64') |
³ýÁËnp.array£¬»¹ÓÐһЩÆäËûº¯ÊýÄÜ´´½¨Êý×é¡£±ÈÈçzeros,ones,ÁíÍ⻹¿ÉÒÔÔÚÒ»¸ötupleÀïÖ¸¶¨shape£º
np.zeros(10)
# array([ 0., 0., 0., 0., 0., 0., 0., 0., 0.,
0.]) |
np.zeros((3,6))
# array([[ 0., 0., 0., 0., 0., 0.],
# [ 0., 0., 0., 0., 0., 0.],
# [ 0., 0., 0., 0., 0., 0.]]) |
np.empty((2,3,2))
# array([[[ 0.00000000e+000, 0.00000000e+000],
# [ 2.16538378e-314, 2.16514681e-314],
# [ 2.16511832e-314, 2.16072529e-314]],
# [[ 0.00000000e+000, 0.00000000e+000],
# [ 2.14037397e-314, 6.36598737e-311],
# [ 0.00000000e+000, 0.00000000e+000]]])
|
np.empty²¢²»Äܱ£Ö¤·µ»ØËùÓÐÊÇ0µÄÊý×飬ijЩÇé¿öÏ£¬»á·µ»ØÎª³õʼ»¯µÄÀ¬»øÊýÖµ£¬ÈçÉÏ¡£
arangeÊÇÒ»¸öÊý×é°æµÄpython rangeº¯Êý£º
np.arange(15)
# array([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10,
11, 12, 13, 14]) |
һЩ´´½¨Êý×éµÄº¯Êý£º

ndarrayµÄÊý¾ÝÀàÐÍ
dtype±£´æÊý¾ÝµÄÀàÐÍ£º
arr1
= np.array([1, 2, 3], dtype=np.float64)
arr2 = np.array([1, 2, 3], dtype=np.int32)
arr1.dtype
# dtype('float64')
arr2.dtype
# dtype('int32')
|
dtype²ÅÊÇnumpyÄÜÁé»î´¦ÀíÆäËûÍâ½çÊý¾ÝµÄÔÒò¡£


¿ÉÒÔÓÃastypeÀ´×ª»»ÀàÐÍ£º
arr
= np.array([1, 2, 3, 4, 5])
arr.dtype
# dtype('int64')
float_arr = arr.astype(np.float64)
float_arr.dtype
# dtype('float64') |
ÉÏÃæÊǰÑint±äΪfloat¡£Èç¹ûÊǰÑfloat±äΪint£¬Ð¡ÊýµãºóµÄ²¿·Ö»á±»¶ªÆú£º
arr
= np.array([3.7, -1.2, -2.6, 0.5, 12.9, 10.1])
arr
# array([ 3.7, -1.2, -2.6, 0.5, 12.9, 10.1])
arr.astype(np.int32)
# array([ 3, -1, -2, 0, 12, 10], dtype=int32
|
»¹¿ÉÒÔÓÃastype°ÑstringÀïµÄÊý×Ö±äΪʵ¼ÊµÄÊý×Ö£º
numeric_strings
= np.array(['1.25', '-9.6', '42'], dtype=np.string_)
numeric_strings
# array([b'1.25', b'-9.6', b'42'],
# dtype='|S4')
numeric_strings.astype(float)
# array([ 1.25, -9.6 , 42. ])
|
Ҫʮ·Ö×¢Òânumpy.string_ÀàÐÍ£¬ÕâÖÖÀàÐ͵ij¤¶ÈÊǹ̶¨µÄ£¬ËùÒÔ¿ÉÄÜ»áÖ±½Ó½ØÈ¡²¿·ÖÊäÈë¶ø²»¸ø¾¯¸æ¡£
Èç¹ûת»»£¨casting£©Ê§°ÜµÄ»°£¬»á¸ø³öÒ»¸öValueErrorÌáʾ¡£
¿ÉÒÔÓÃÆäËûÊý×éµÄdtypeÖ±½ÓÀ´Öƶ¨ÀàÐÍ£º
int_array
= np.arange(10)
calibers = np.array([.22, .270, .357, .380,
.44, .50], dtype=np.float64)
int_array.astype(calibers.dtype)
# array([ 0., 1., 2., 3., 4., 5., 6., 7., 8.,
9.])
|
»¹¿ÉÒÔÀûÓÃÀàÐ͵ÄËõд£¬±ÈÈçu4¾Í´ú±íunit32£º
empty_unit32
= np.empty(8, dtype='u4')
empty_unit32
# array([0, 0, 0, 0, 0, 0, 0, 0], dtype=uint32) |
astype×ÜÊǻ᷵»ØÒ»¸öеÄÊý×é¡£
Êý×éºÍ±êÁ¿Ö®¼äµÄÔËËã
Êý×éºÜÖØÒª£¬ÒòΪËüʹÄã²»Óñàдѻ·¼´¿É¶ÔÊý¾ÝÖ´ÐÐÅúÁ¿ÔËËã¡£½Ð×öʸÁ¿»¯¡£´óСÏàµÈµÄÊý×éÖ®¼äµÄÈκÎËãÊõÔËËã¶¼»á½«ÔËËãÓ¦Óõ½ÔªËؼ¶£º
arr
= np.array([[1., 2., 3.], [4., 5., 6.]])
arr
# array([[ 1., 2., 3.],
# [ 4., 5., 6.]]
arr * arr
# array([[ 1., 4., 9.],
# [ 16., 25., 36.]])
arr - arr
# array([[ 0., 0., 0.],
# [ 0., 0., 0.]])
|
Êý×éÓë±êÁ¿µÄËãÊõÔËËãÒ²»á½«ÄǸö±êÁ¿Öµ´«²¥µ½¸÷¸öÔªËØ:
1
/ arr
# array([[ 1. , 0.5 , 0.33333333],
# [ 0.25 , 0.2 , 0.16666667]])
arr ** 0.5
# array([[ 1. , 1.41421356, 1.73205081],
# [ 2. , 2.23606798, 2.44948974]])
|
²»Í¬´óСµÄÊý×éÖ®¼äµÄÔËËã½Ð×ö¹ã²¥£¨broadcasting£©¡£
»ù±¾µÄË÷ÒýºÍÇÐÆ¬
NumPyÊý×éµÄË÷ÒýѡȡÊý¾Ý×Ó¼¯»òµ¥¸öÔªËØµÄ·½Ê½ÓкܶࡣһάÊý×éºÍPythonÁÐ±í¹¦Äܲ¶à£º
arr
= np.arange(10)
arr
# array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
arr[5]
# 5
arr[5:8]
# array([5, 6, 7])
arr[5:8] = 12
arr
# array([ 0, 1, 2, 3, 4, 12, 12, 12, 8, 9])
|
µ±Ä㽫һ¸ö±êÁ¿Öµ¸³¸øÒ»¸öÇÐÆ¬Ê±£¨Èçarr[5:8]=12£©£¬¸ÃÖµ»á×Ô¶¯´«²¥£¨¡°¹ã²¥¡±£©µ½Õû¸öÑ¡Çø¡£ºÍPythonÁÐ±í²»Í¬µÄÊÇ£¬Êý×éÇÐÆ¬ÊÇÔʼÊý×éµÄÊÓͼ¡£ÕâÒâζ×ÅÊý¾Ý²»»á±»¸´ÖÆ£¬ÈκÎÐ޸ͼ»á·´Ó¦µ½Ô´Êý×éÉÏ¡£
arr_slice
= arr[5:8]
arr_slice
# array([12, 12, 12])
arr_slice[1] = 12345
# array([ 0, 1, 2, 3, 4, 12, 12345, 12, 8, 9])
arr_slice[:] = 64
arr
# array([ 0, 1, 2, 3, 4, 64, 64, 64, 8, 9])
|
ÈôÏëµÃµ½ndarrayÇÐÆ¬µÄÒ»·Ý¸±±¾£¬¾ÍÐèÒªÏÔʽµØ½øÐи´ÖƲÙ×÷£¬ÀýÈçarr[5:8].copy()
ÔÚÒ»¸ö¶þάÊý×éÖУ¬¸÷Ë÷ÒýλÖÃÉϵÄÔªËØ²»ÔÙÊDZêÁ¿¶øÊÇһάÊý×飺
arr2d
= np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
arr2d[2]
# array([7, 8, 9]) |
ÓÐÁ½ÖÖ·½Ê½¿ÉÒÔ·ÃÎʵ¥Ò»ÔªËØ:
arr2d[0][2]
# 3
arr2d[0, 2]
# 3 |
¶þάÊý×éµÄË÷Òý·½Ê½£º

¶ÔÓÚ¶àάÊý×飬Èç¹ûÊ¡ÂÔºóÃæµÄË÷Òý£¬·µ»ØµÄ½«ÊÇÒ»¸öµÍγ¶ÈµÄ¶àάÊý×é¡£ÀýÈ磬һ¸ö2
x 2 x 3Êý×é
arr3d
= np.array([[[1, 2, 3], [4, 5, 6]], [[7, 8,
9], [10, 11, 12]]])
arr3d
# array([[[ 1, 2, 3],
# [ 4, 5, 6]],
# [[ 7, 8, 9],
# [10, 11, 12]]])
|
arr3d[0]ÊÇÒ»¸ö2x3Êý×飺
arr3d[0]
# array([[1, 2, 3],
# [4, 5, 6]]) |
±êÁ¿ºÍÊý×é¶¼Äܸ³¸øarr3d[0]:
old_values
= arr3d[0].copy()
arr3d[0] = 42
arr3d
# array([[[42, 42, 42],
# [42, 42, 42]],
# [[ 7, 8, 9],
# [10, 11, 12]]])
arr3d[0] = old_values
arr3d
# array([[[ 1, 2, 3],
# [ 4, 5, 6]],
# [[ 7, 8, 9],
# [10, 11, 12]]])
|
arr3d[1, 0]»á¸ø·µ»ØÒ»¸ö(1, 0)µÄһάÊý×飺
arr3d[1,
0]
# array([7, 8, 9]) |
×¢Ò⣬ÉÏÊöѡȡÊý×é×Ó¼¯µÄÀý×Ó·µ»ØµÄ¶¼ÊÇÊÓͼ£¨²»ÊǸ±±¾£¬ÊDZ¾×𣩡£
ÇÐÆ¬Ë÷Òý
ndarrayµÄÇÐÆ¬Óï·¨ºÍPythonÁбíÕâÑùµÄһά¶ÔÏó²î²»¶à¡£
¸ßά¶ÔÏó¿ÉÒÔÔÙÒ»¸ö»ò¶à¸öÖáÉϽøÐÐÇÐÆ¬£¬Ò²¿ÉÒÔ¸úÕûÊýË÷Òý»ìºÏʹÓá£
arr2d
# array([[1,2,3],
# [4,5,6]
# [7,8,9]])
arr2d[:2]
# array([[1,2,3],
# [4,5,6]]) |
¿ÉÒÔ¿´³ö£¬ËüÊÇÑØ×Åaxis 0£¨ÐУ©À´´¦ÀíµÄ¡£¿ÉÒÔÒ»´Î´«Èë¶à¸öÇÐÆ¬£¬¾ÍÏñ´«Èë¶à¸öË÷ÒýÄÇÑù£º
arr2d[:2,
1:]
# array([[2, 3],
# [5, 6]]) |
Èç´ËÇÐÆ¬£¬Ö»Äܵõ½ÏàͬάÊýµÄÊý×éÊÓͼ¡£¡£½«ÕûÊýË÷ÒýºÍÇÐÆ¬»ìºÏ£¬¿ÉÒԵõ½µÍγ¶ÈÇÐÆ¬£º
arr2d[1,
:2]
# array([4, 5]) |
×¢Ò⣬ֻÓÐðºÅ±íʾѡȡÕû¸öÖᣬÀýÈ磺
arr2d[:,
:1]
# array([[1],
# [4],
# [7]]) |
¶ÔÇÐÆ¬±í´ïʽµÄ¸³Öµ²Ù×÷Ò²»áÀ©É¢µ½Õû¸öÑ¡Çø£º
arr2d[:2,
1:] = 0
arr2d
# array([[1, 0, 0],
# [4, 0, 0],
# [7, 8, 9]]) |
²¼¶ûÐÍË÷Òý
¼ÙÉèÎÒÃÇÓÐÒ»¸öÓÃÓÚ´æ´¢Êý¾ÝµÄÊý×éÒÔ¼°Ò»¸ö´æ´¢ÐÕÃûµÄÊý×飨º¬ÓÐÖØ¸´Ï¡£±ÈÈç˵£º
names
= np.array(['Bob', 'Joe', 'Will', 'Bob', 'Will',
'Joe', 'Joe'])
names
# array(['Bob', 'Joe', 'Will', 'Bob', 'Will',
'Joe', 'Joe'],
# dtype='<U4')
data = np.random.randn(7, 4)
data
# array([[ 0.06226591, -0.27507719, 0.39229467,
1.0592541 ],
# [ 0.29856009, -0.287806 , -1.06875432, -0.33292789],
# [-0.48500348, -0.10072345, -1.76972263, -0.27355081],
# [ 0.23004649, -0.76163183, 0.24673954, -0.47700137],
# [ 1.54353606, -0.17964118, -0.7093982 , -1.55488714],
# [ 0.17778785, 1.25049472, 1.92926838, 0.49794146],
# [ 0.11571349, -1.28075539, -1.15407468, 0.86778147]])
|
¼ÙÉèÿ¸öÃû×Ö¶ÔÓ¦dataÊý×éÖеÄÒ»ÐУ¬ÎÒÃÇÏëҪѡ³ö¶ÔÓ¦ÓÚÃû×Ö'Bob'µÄËùÓÐÐС£ºÍËãÊõÔËËãÒ»Ñù£¬Êý×éµÄ±È½ÏÔËË㣨Èç==£©Ò²ÊÇʸÁ¿»¯µÄ¡£Òò´Ë£¬¶ÔnamesºÍ×Ö·û´®¡°Bob¡±µÄ±È½ÏÔËËã»á²úÉúÒ»¸ö²¼¶ûÐÍÊý×飺
names
== 'Bob'
# array([ True, False, False, True, False,
False, False], dtype=bool) |
²¼¶ûÐÍÊý×é¿ÉÓÃÓÚÊý×éË÷Òý£º
data[names
== 'Bob']
# array([[ 0.02584271, -1.53529621, 0.73143988,
-0.34086189],
# [-0.48632936, 0.63817756, -0.40792716, -1.48037389]])
|
²¼¶ûÐÍÊý×éµÄ³¤¶È±ØÐë¸ú±»Ë÷ÒýµÄÖ᳤¶ÈÒ»Ö¡£»¹¿ÉÒÔ½«²¼¶ûÐÍÊý×é¸úÇÐÆ¬¡¢ÕûÊý£¨»òÕûÊýÐòÁУ©»ìºÏʹÓãº
data[names
== 'Bob', 2:]
# array([[ 0.73143988, -0.34086189],
# [-0.40792716, -1.48037389]])
data[names == 'Bob', 3]
# array([-0.34086189, -1.48037389])
|
Ñ¡ÖгýÁË'Bob'ÍâµÄËùÓÐÐУ¬¿ÉÒÔÓÃ!=»òÕß~£º
names
!= 'Bob'
# array([False, True, True, False, True, True,
True], dtype=bool)
data[~(names == 'Bob')]
# array([[ 0.40864782, 0.53476799, 1.09620596,
0.4846564 ],
# [ 1.95024076, -0.37291038, -0.40424703, 0.30297059],
# [-0.81976335, -1.10162466, -0.59823212, -0.10926744],
# [-0.5212113 , 0.29449179, 2.0568032 , 2.00515735],
# [-2.36066876, -0.3294302 , -0.24464646, -0.81432884]])
|
ѡȡÕâÈý¸öÃû×ÖÖеÄÁ½¸öÐèÒª×éºÏÓ¦Óöà¸ö²¼¶ûÌõ¼þ£¬Èç&£¨Ó룩¡¢|£¨»ò£©Ö®ÀàµÄ²¼¶ûÔËËã·û¡£
names
# array(['Bob', 'Joe', 'Will', 'Bob', 'Will',
'Joe', 'Joe'],
# dtype='<U4')
mask = (names == 'Bob') | (names == 'Will')
mask
# array([ True, False, True, True, True, False,
False], dtype=bool)
data[mask]
# array([[ 0.02584271, -1.53529621, 0.73143988,
-0.34086189],
# [ 1.95024076, -0.37291038, -0.40424703, 0.30297059],
# [-0.48632936, 0.63817756, -0.40792716, -1.48037389],
# [-0.81976335, -1.10162466, -0.59823212, -0.10926744]])
|
ͨ¹ý²¼¶ûÐÍË÷ÒýѡȡÊý×éÖеÄÊý¾Ý£¬×ÜÊÇ´´½¨Êý¾ÝµÄ¸±±¾£¬¼´Ê¹·µ»ØÒ»ÃþÒ»ÑùµÄÊý×éÒ²ÊÇÈç´Ë¡£
ͨ¹ý²¼¶ûÐÍÊý×éÉèÖÃÖµÊÇÒ»ÖÖ³£ÓÃÊֶΣ¬ÎªÁ˽«dataÖеÄËùÓиºÖµÉèÖÃΪ0£¬Ö»Ð裺
data[data
< 0] = 0
data
# array([[ 0.02584271, 0. , 0.73143988, 0. ],
# [ 0.40864782, 0.53476799, 1.09620596, 0.4846564
],
# [ 1.95024076, 0. , 0. , 0.30297059],
# [ 0. , 0.63817756, 0. , 0. ],
# [ 0. , 0. , 0. , 0. ],
# [ 0. , 0.29449179, 2.0568032 , 2.00515735],
# [ 0. , 0. , 0. , 0. ]])
|
ͨ¹ýһά²¼¶ûÊý×éÉèÖÃÕûÐлòÁеÄÖµÒ²ºÜ¼òµ¥£º
data[names
!= 'Joe'] = 7
data
# array([[ 7. , 7. , 7. , 7. ],
# [ 0.40864782, 0.53476799, 1.09620596, 0.4846564
],
# [ 7. , 7. , 7. , 7. ],
# [ 7. , 7. , 7. , 7. ],
# [ 7. , 7. , 7. , 7. ],
# [ 0. , 0.29449179, 2.0568032 , 2.00515735],
# [ 0. , 0. , 0. , 0. ]])
|
»¨Ê½Ë÷Òý
»¨Ê½Ë÷ÒýÊÇÒ»¸öNumPyÊõÓËüÖ¸µÄÊÇÀûÓÃÕûÊýÊý×é½øÐÐË÷Òý¡£¼ÙÉèÓÐÒ»¸ö8 x 4µÄÊý×飺
arr
= np.empty((8, 4))
for i in range(8):
arr[i] = i
arr
# array([[ 0., 0., 0., 0.],
# [ 1., 1., 1., 1.],
# [ 2., 2., 2., 2.],
# [ 3., 3., 3., 3.],
# [ 4., 4., 4., 4.],
# [ 5., 5., 5., 5.],
# [ 6., 6., 6., 6.],
# [ 7., 7., 7., 7.]])
|
ΪÁËÒÔÌØ¶¨Ë³Ðòѡȡ×Ó¼¯£¬Ö»Ðè´«ÈëÒ»¸öÖ¸¶¨Ë³ÐòµÄÕûÊýÁбí»òndarray¼´¿É£º
arr[[4,
3, 0, 6]]
# array([[ 4., 4., 4., 4.],
# [ 3., 3., 3., 3.],
# [ 0., 0., 0., 0.],
# [ 6., 6., 6., 6.]])
|
ʹÓøºÊýË÷Òý½«´Óĩβ¿ªÊ¼Ñ¡ÐУº
arr[[-3,
-5, -7]]
# array([[ 5., 5., 5., 5.],
# [ 3., 3., 3., 3.],
# [ 1., 1., 1., 1.]]) |
Ò»´Î²ôÈë¶à¸öË÷ÒýÊý×é»áÓÐÒ»µãÌØ±ð¡£Æä·µ»ØµÄÊÇÒ»¸öһάÊý×飬ÆäÖеÄÔªËØ¶ÔÓ¦¸÷¸öË÷ÒýÔª×飺
arr
= np.arange(32).reshape((8, 4))
arr
# array([[ 0, 1, 2, 3],
# [ 4, 5, 6, 7],
# [ 8, 9, 10, 11],
# [12, 13, 14, 15],
# [16, 17, 18, 19],
# [20, 21, 22, 23],
3 [24, 25, 26, 27],
# [28, 29, 30, 31]])
arr[[1, 5, 7, 2], [0, 3, 1, 2]]
# array([ 4, 23, 29, 10])
|
ÒÔ¿´µ½[ 4, 23, 29, 10]·Ö±ð¶ÔÓ¦(1, 0), (5, 3), (7, 1), (2,
2)¡£²»ÂÛÊý×éÓжàÉÙά£¬»¨Ê½Ë÷ÒýµÄ½á¹û×ÜÊÇһά¡£Ñ¡È¡¾ØÕóµÄÐÐÁÐ×Ó¼¯¿ÉÒÔʹÓÃÈçÏ·½Ê½£º
arr[[1,
5, 7, 2]][:, [0, 3, 1, 2]]
# array([[ 4, 7, 5, 6],
# [20, 23, 21, 22],
# [28, 31, 29, 30],
# [ 8, 11, 9, 10]])
|
ÉÏÃæµÄÒâ˼ÊÇ£¬ÏÈ´ÓarrÖÐÑ¡³ö[1, 5, 7, 2]ÕâËÄÐУº
array([[
4, 5, 6, 7],
[20, 21, 22, 23],
[28, 29, 30, 31],
[ 8, 9, 10, 11]]) |
È»ºó[:, [0, 3, 1, 2]]±íʾѡÖÐËùÓÐÐУ¬µ«ÊÇÁеÄ˳ÐòÒª°´0,3,1,2À´ÅÅ¡£ÓÚÊǵõ½£º
array([[
4, 7, 5, 6],
[20, 23, 21, 22],
[28, 31, 29, 30],
[ 8, 11, 9, 10]]) |
»¨Ê½Ë÷Òý¸úÇÐÆ¬²»Í¬£¬×ÜÊǽ«Êý¾Ý¸´ÖƵ½ÐÂÊý×éÖС£
Êý×éתÖúÍÖá¶Ô»»
תÖÃÊÇÖØËܵÄÒ»ÖÖÌØÊâÐÎʽ£¬Æä·µ»ØÔ´Êý¾ÝµÄÊÓͼ£¨²»»á½øÐÐÈκθ´ÖƲÙ×÷£©¡£ÓÐÁ½ÖÖ·½Ê½£¬Ò»ÊÇtranspose·½·¨£¬¶þÊÇTÊôÐÔ¡£
arr
= np.arange(15).reshape((3, 5))
arr
# array([[ 0, 1, 2, 3, 4],
# [ 5, 6, 7, 8, 9],
# [10, 11, 12, 13, 14]])
arr.T
# array([[ 0, 5, 10],
# [ 1, 6, 11],
# [ 2, 7, 12],
# [ 3, 8, 13],
# [ 4, 9, 14]])
|
ÔÙ½øÐоØÕó¼ÆËãʱ£¬³£ÐèÒª¸Ã²Ù×÷£¬ÈçÀûÓÃnp.dot¼ÆËãÄÚ»ý£º
arr
= np.random.randn(6,3)
np.dot(arr.T,arr)
# array([[ 1.8717599 , -1.66444711, -0.65044072],
# [-1.66444711, 6.02759713, 0.05453921],
# [-0.65044072, 0.05453921, 3.65394036]])
|
¶ÔÓÚ¸ßάÊý×飬transposeÐèÒªµÃµ½Ò»¸öÓÉÖá±àºÅ×é³ÉµÄÔª×é²ÅÄܶÔÕâЩÖá½øÐÐתÖ㨱ȽϷѲé¿ËÀ£©£º
arr
= np.arange(16).reshape((2, 2, 4))
arr
# array([[[ 0, 1, 2, 3],
# [ 4, 5, 6, 7]],
# [[ 8, 9, 10, 11],
# [12, 13, 14, 15]]])
arr.transpose((1, 0, 2))
# array([[[ 0, 1, 2, 3],
# [ 8, 9, 10, 11]],
# [[ 4, 5, 6, 7],
# [12, 13, 14, 15]]])
|
Æäʵ¾ÍÊǰÑÔ±¾µÄÖá°´Ôª×éÀïµÄÄÚÈÝÖØÅÅһϡ£¼òµ¥µÄתÖÿÉÒÔÓÃ.T¡£ndarray»¹ÓÐÒ»¸öswapaxes·½·¨£¬ÐèÒª½ÓÊÜÒ»¶ÔÖá±àºÅ£º
arr
# array([[[ 0, 1, 2, 3],
# [ 4, 5, 6, 7]],
# [[ 8, 9, 10, 11],
# [12, 13, 14, 15]]])
arr.swapaxes(1, 2)
# array([[[ 0, 4],
# [ 1, 5],
# [ 2, 6],
# [ 3, 7]],
# [[ 8, 12],
# [ 9, 13],
# [10, 14],
# [11, 15]]])
|
swapaxesÒ²ÊÇ·µ»ØÊý¾ÝµÄÊÓͼ£¨²»»á½øÐÐÈκθ´ÖƲÙ×÷£©¡£
|