一、向量化和广播
两个数组的维度不同,但是它们的后缘维度相等。
b=np.arange(10)
print(b,b.shape)
c=np.ones((2,10))
print(c,c.shape)
[2 3 4 5 6 7 8 9]
[0 1 2 3 4 5 6 7 8 9] (10,)
[[1. 1. 1. 1. 1. 1. 1. 1. 1. 1.]
[1. 1. 1. 1. 1. 1. 1. 1. 1. 1.]] (2, 10)
[[ 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.]
[ 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.]]
m=b+c
print(m)
b与c维度不同,一个是一维,一个是二维,但他们的后缘纬度相等。因此可以相加。
两个数组维度不同,但是其中有维度是1。
a=np.arange(4).reshape(-1,1)
print(a,a.shape)
b=np.ones(3)
print(b,b.shape)
print(a+b)
[[0]
[1]
[2]
[3]] (4, 1)
[1. 1. 1.] (3,)
[[1. 1. 1.]
[2. 2. 2.]
[3. 3. 3.]
[4. 4. 4.]]
两个数组维度不同,且没有任何一个维度是1,则匹配引发错误:
a=np.arange(4)
b=np.array([1,2,3])
print(a+b)
ValueError: operands could not be broadcast together with shapes (4,) (3,)
二、数学函数
1.ndarray与数字运算
加减乘除:
a=np.array([1,2,3,4,5,6])
b=a+1
c=a-1
d=a*2
e=a/2
print(a,b,c,d,e)
[1 2 3 4 5 6] [2 3 4 5 6 7] [0 1 2 3 4 5] [ 2 4 6 8 10 12] [0.5 1. 1.5 2. 2.5 3. ]
整除与平方
m=d//3
n=a**2
print(m,n)
[0 1 2 2 3 4] [ 1 4 9 16 25 36]
2)多维数组与多维数组
加减乘除:
m=np.array([[1,2,3],[4,5,6],[7,8,9],[10,11,12]])
n=np.arange(12).reshape(4,3)
print(m,m.shape)
print(n,n.shape)
[[ 1 2 3]
[ 4 5 6]
[ 7 8 9]
[10 11 12]] (4, 3)
[[ 0 1 2]
[ 3 4 5]
[ 6 7 8]
[ 9 10 11]] (4, 3)
创建两个二维数组
a=m+n
b=m-n
c=m*n
d=n/m
print(a,b,c,d)
[[ 1 3 5]
[ 7 9 11]
[13 15 17]
[19 21 23]] [[1 1 1]
[1 1 1]
[1 1 1]
[1 1 1]] [[ 0 2 6]
[ 12 20 30]
[ 42 56 72]
[ 90 110 132]] [[0. 0.5 0.66666667]
[0.75 0.8 0.83333333]
[0.85714286 0.875 0.88888889]
[0.9 0.90909091 0.91666667]]
加减乘除运算
e=n//m
print(m)
[[ 1 2 3]
[ 4 5 6]
[ 7 8 9]
[10 11 12]]
地板除。
3.功能函数
(1)开根、平方
a=np.sqrt(m)
b=np.square(m)
print(a)
print(b)
[[1. 1.41421356 1.73205081]
[2. 2.23606798 2.44948974]
[2.64575131 2.82842712 3. ]
[3.16227766 3.31662479 3.46410162]]
[[ 1 4 9]
[ 16 25 36]
[ 49 64 81]
[100 121 144]]
(2)三角函数
a=np.array([1,3,9,60,90,30])
b=np.sin(a)
c=np.arcsin(b)
d=np.cos(a)
e=np.arccos(d)
f=np.tan(a)
g=np.arctan(f)
print(a)
print(b)
print(c)
print(d)
print(e)
print(f)
print(g)
[ 1 3 9 60 90 30]
[ 0.84147098 0.14112001 0.41211849 -0.30481062 0.89399666 -0.98803162]
[ 1. 0.14159265 0.42477796 -0.30973958 1.10618695 -1.41592654]
[ 0.54030231 -0.9899925 -0.91113026 -0.95241298 -0.44807362 0.15425145]
[1. 3. 2.71681469 2.83185307 2.0354057 1.41592654]
[ 1.55740772 -0.14254654 -0.45231566 0.32004039 -1.99520041 -6.4053312 ]
[ 1. -0.14159265 -0.42477796 0.30973958 -1.10618695 -1.41592654]
(3)指数、对数
a=np.array([1,3,9,60,90,30])
b=np.exp(a)
c=np.log(a)
print(b)
print(c)
[2.71828183e+00 2.00855369e+01 8.10308393e+03 1.14200739e+26
1.22040329e+39 1.06864746e+13]
[0. 1.09861229 2.19722458 4.09434456 4.49980967 3.40119738]
底数为2:
a=np.array([1,3,9,60,90,30])
b=np.exp2(a)
c=np.log2(a)
print(b)
print(c)
[2.00000000e+00 8.00000000e+00 5.12000000e+02 1.15292150e+18
1.23794004e+27 1.07374182e+09]
[0. 1.5849625 3.169925 5.9068906 6.4918531 4.9068906]