Task 04数组的计算

一、向量化和广播
两个数组的维度不同,但是它们的后缘维度相等。

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]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值