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]]