Python数据分析之numpy

 numpy思维导图

numpy常用功能

 

 

 广播机制

if a.shape=b.shape: a b 的运算仅在对应位置上进行
else: 广播机制 使形状较小的进行广播使之与形状较大的兼容
当a.shape=(3,5),b.shape=(4,2)
        ====>a,b.reshape(4,5),但此时不符合广播原则故而不可以计算
a.shape= (2,3,5),b.shape=(3,1)====>a,b.reshape(2,3,5)
规律:要么对应维度上对应数值相同,要么有空位或有“1”
import numpy as np
a=np.arange(18).reshape((2,3,3))
b=np.arange(3).reshape(3,1)
print(a+b)
[[[ 0  1  2]
  [ 4  5  6]
  [ 8  9 10]]

 [[ 9 10 11]
  [13 14 15]
  [17 18 19]]]
import numpy as np
a=np.arange(15).reshape((3,5))
b=np.arange(2).reshape(1,2)
print(a+b)
print(a+b)
ValueError: operands could not be broadcast together with shapes (3,5) (1,2) 

数组的复制问题

import numpy as np
a=np.arange(15).reshape((3,5))
print("***"*3+"a is :"+"***"*3)
print(a)
c=a
print("***"*3+"c is :"+"***"*3)
print(c)
c[0][0]=9
print("***"*3+"a[0][0] is :"+"***"*3)
print(a[0,0])
*********a is :*********
[[ 0  1  2  3  4]
 [ 5  6  7  8  9]
 [10 11 12 13 14]]
*********c is :*********
[[ 0  1  2  3  4]
 [ 5  6  7  8  9]
 [10 11 12 13 14]]
*********a[0][0] is :*********
9

        上例中说明当改变c的值,a的值也会随之改变。可理解为通过“=”进行复制后,a,c共享同一段存储空间,此时a,c对该段数据均有处理能力。此外,列表复制也类似上述所谈,即引用传值。

        在数组中解决上述问题可采用c=np.array(a)或者c=a.copy()

import numpy as np
a=np.arange(15).reshape((3,5))
print("***"*3+"a is :"+"***"*3)
print(a)

c=np.array(a)
print("***"*3+"c is :"+"***"*3)
print(c)

c[0][0]=9
print("***"*3+"a[0][0] is :"+"***"*3)
print(a[0,0])

d=a.copy()
print("***"*3+"d is :"+"***"*3)
print(d)
d[0][0]=9
print("***"*3+"a[0][0] is :"+"***"*3)
print(a[0,0])
*********a is :*********
[[ 0  1  2  3  4]
 [ 5  6  7  8  9]
 [10 11 12 13 14]]
*********c is :*********
[[ 0  1  2  3  4]
 [ 5  6  7  8  9]
 [10 11 12 13 14]]
*********a[0][0] is :*********
0
*********d is :*********
[[ 0  1  2  3  4]
 [ 5  6  7  8  9]
 [10 11 12 13 14]]
*********a[0][0] is :*********
0



版权声明:本文为m0_66447617原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。