python numpy模块

1.创建数组

import numpy as np
a = np.array([1,2,3,4])
print(a)
print(a.ndim)     #查看维数
print(a.dtype)    #查看数据类型
print(a.reshape((4,1)))     #改变形状
b = np.arange(1,10,2)   #创建连续数组
print(b)
Output:[1 3 5 7 9]
#包【0,1】分成11份
c = np.linspace(0,1,11)
print(c)
OutPut:[0.  0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1. ]
# 创建全1矩阵
d = np.ones((3,2))
print(d)
Output:
[[1. 1.]
 [1. 1.]
 [1. 1.]]

同理还有全0矩阵np.zeros(),
还有对角阵np.eye().注:此函数只有一个参数。

e = np.random.randn(6,4)  #创建一6X4的随机数组
print(e)

2.numpy提供了灵活的索引机制来访问数组内的元素

f = np.arange(10)
print(f)
[0 1 2 3 4 5 6 7 8 9]
print(f[0],f[-1])
0 9
print(f[:4])   #半开闭区间,不包含最后一个元素
[0 1 2 3]
print(f[3:7])
[3 4 5 6]
print(f[3:])
[3 4 5 6 7 8 9]
print(f[2:8:2])
[2 4 6]
print(f[2::2])
[2 4 6 8]
print(f[::3])
[0 3 6 9]

3.二维数组的索引

a = np.arange(0,51,10).reshape(6,1)+np.arange(10)
print(a)
[[ 0  1  2  3  4  5  6  7  8  9]
 [10 11 12 13 14 15 16 17 18 19]
 [20 21 22 23 24 25 26 27 28 29]
 [30 31 32 33 34 35 36 37 38 39]
 [40 41 42 43 44 45 46 47 48 49]
 [50 51 52 53 54 55 56 57 58 59]]
 print(a[0,1],a[5,9])
 1 59
 print(a[0,0:6])
 [0 1 2 3 4 5]
 print(a[:3,6:])
 [[ 6  7  8  9]
 [16 17 18 19]
 [26 27 28 29]]
 print(a[2,:])
 [20 21 22 23 24 25 26 27 28 29]
 print(a[:,1])
 [ 1 11 21 31 41 51]
 print(a[:,::2])
 [[ 0  2  4  6  8]
 [10 12 14 16 18]
 [20 22 24 26 28]
 [30 32 34 36 38]
 [40 42 44 46 48]
 [50 52 54 56 58]]
print(a[::3,:])
[[ 0  1  2  3  4  5  6  7  8  9]
 [30 31 32 33 34 35 36 37 38 39]]
 print(a[::2,::3])
 [[ 0  3  6  9]
 [20 23 26 29]
 [40 43 46 49]]

4.另外一种索引方法是通过Bool数组

a = np.random.randint(10,20,6)
print(a)
print(a%2)
print(a[a%2 == 0])
[18 19 10 12 18 11]
[0 1 0 0 0 1]
[18 10 12 18]

5.Numpy运算

a = np.arange(6)
print(a)
print(a+5)
[0 1 2 3 4 5]
[ 5  6  7  8  9 10]
b = np.random.randint(1,5,20).reshape(4,5)
print(b)
[[1 1 2 2 3]
 [4 3 1 2 4]
 [3 3 4 1 1]
 [4 4 1 2 2]]
 b = np.random.random_integers(0,1,(5,3))
 print(b)
 [[1 0 0]
 [1 1 0]
 [0 1 1]
 [0 0 1]
 [0 1 1]]
 c = np.random.random_integers(1,1,(5,3))
 print(c)
 [[1 1 1]
 [1 1 1]
 [1 1 1]
 [1 1 1]
 [1 1 1]]
 print(b*c)           #注意:这里是数组想成,即逐个元素相乘,不是内积
 [[1 0 0]
 [1 1 0]
 [0 1 1]
 [0 0 1]
 [0 1 1]]
 print(np.dot(b,c))
 [[2 2 2 2 2]
 [3 3 3 3 3]
 [2 2 2 2 2]
 [2 2 2 2 2]
 [3 3 3 3 3]]

注:如果在运算时,数组维数不匹配,Numpy会使用Boardcost机制来匹配,如果匹配不成功,则报错。

6.数组比较大小

a = np.array([1,2,3,4])
b = np.array([2,3,3,5])
print(a==b)
[False False  True False]
print((a==b).all(),(a==b).any())
False True

7.Numpy还提供了一些数组运算的内置函数:

np.cos()
np.exp()
np.sqrt()
a.sum()
a.mean()
a.std()
a.min()
a.max()
a.argmax()   #返回最大元素所在的索引
a.argmin()

2018年4月26日
于杭

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值