Python之Numpy库(4)

1、arange()方法

a = np.arange(10, 30, 5)
print(a)

#运行结果:
[10 15 20 25]

类似于python中的range()方法,取10-30(不包含30)中的数字,以5作为间隔。

a = np.arange(20)
print(a.reshape(4, 5))

#运行结果:
[[ 0  1  2  3  4]
 [ 5  6  7  8  9]
 [10 11 12 13 14]
 [15 16 17 18 19]]

对于arange()产生的数组,我们也可以用reshape()方法,得到矩阵。

2、np.random随机模块

a = np.random.random((2, 3))
print(a)

#运行结果:
[[0.21978978 0.25814437 0.53806867]
 [0.7482159  0.25421237 0.29024159]]

在random模块下调取了random函数,传入元组(2, 3),返回一个2行3列的矩阵。

需要注意的是,需写成random.random,且传入的为元组。

讲道理,生成的随机数应该是有正有负,然鹅我试了很多次都没有出现负数……

3、linespace()函数

from numpy import pi
a = np.linspace(0, 2*pi, 20) #0-2pi间的数平均分为20份
print(a)

#运行结果:
[0.         0.33069396 0.66138793 0.99208189 1.32277585 1.65346982
 1.98416378 2.31485774 2.64555171 2.97624567 3.30693964 3.6376336
 3.96832756 4.29902153 4.62971549 4.96040945 5.29110342 5.62179738
 5.95249134 6.28318531]

使用linespace()函数在0到2pi之间得到2个数,这些数字的间隔是平均取的。

4、对np.array()的一些数学运算

首先,我们先生成2组数组:

扫描二维码关注公众号,回复: 9351725 查看本文章
a = np.array([20, 30, 40, 50])
b = np.arange(4)
print(a)
print(b)

#运行结果:
[20 30 40 50]
[0 1 2 3]

接下来,我们来做一些数学运算:

c = a - b
print(c)

#运行结果:
[20 29 38 47]

可以看出来,a和b进行了对应位置的相减。

我们继续操作一下:

c = a - b
c = c - 1
print(c)

#运行结果:
[19 28 37 46]

不难看出,c中的每一个元素都减1了。

我们再来试试平方的运算:

a = np.array([20, 30, 40, 50])
b = np.arange(4)
c = b ** 2
print(c)

#运行结果:
[0 1 4 9]

再试试布尔值:

a = np.array([20, 30, 40, 50])
b = np.arange(4)
print(a < 35)

#运行结果:
[ True  True False False]

下面试试矩阵的*乘法:

A = np.array([[1, 1], [0, 1]])
B = np.array([[2, 0], [3, 4]])
print(A)
print('-------')
print(B)

#运行结果:
[[1 1]
 [0 1]]
-------
[[2 0]
 [3 4]]

OK,我们得到了A和B两个矩阵,接下来进行*乘法运算:

print(A*B)

#运行结果:
[[2 0]
 [0 4]]

好吧,怎么得到的呢?

其实是采用对应位置进行相乘,1*2=2, 1*0=0, 0*3=0,1*4=4,因此得到的是上述结果。

接下来,试一下.dot()操作

print(A.dot(B))

#运行结果:
[[5 4]
 [3 4]]

.dot()方法采用的是第一行乘第一列然后进行相加,比如1*2 + 1*3 = 5,然后第一行乘以第二列再相加,如1*0 + 1*4 = 4,然后第二行乘以第一列后相加,即 0*2 + 1*3 = 3,最后第二行乘以第二列再相加,0*0 + 1*4 = 4。

此外,.dot()操作也可以写作np.dot(A,B),结果一样:

A = np.array([[1, 1], [0, 1]])
B = np.array([[2, 0], [3, 4]])
print(np.dot(A, B))

#运行结果:
[[5 4]
 [3 4]]
发布了27 篇原创文章 · 获赞 9 · 访问量 999

猜你喜欢

转载自blog.csdn.net/sinat_42574069/article/details/99698110