Python之numpy快速入门

Numpy

numpy中所有的计算都是围绕着数组进行的,因此在计算之前,需要将数据表示成数组的形式,数组默认类型是64位的浮点数

numpy大大提升了python的数据计算速度,numpy核心就是将问题向量化、并行化

初始化

import numpy as np

arr = np.array([1, 2, 3, 4])# 初始化一维数组
print(arr.dtype) # int32

# zeros((n,m)) n行m列全0数组
arr = np.zeros((3, 2)) # 使用zeros创建一个3行2列的全0数组
print(arr.dtype) # float64
print(arr.shape) # (3, 2)
print(arr)
#[[0. 0.]
# [0. 0.]
# [0. 0.]]


# ones((n,m)) 同zeros,但是全1数组
arr = np.ones((4, 3))

# arange(),用法类似python的range函数
arr = np.arange(3, 7) # arr = [3 4 5 6]
arr = np.arange(3, 7, 2) # arr = [3 5]

# linspace 返回某个区间等间距分配的数组,前面两个是参数的范围,第三个是区间总数
arr = np.linspace(0, 1, 5) # [0.   0.25 0.5  0.75 1.  ]


# random.rand(n,m) 生成n行m列随机数组,随机数在0—1之间
arr = np.random.rand(2, 4)*10
#一次随机结果如下:
#[[7.40998453 8.5574904  6.47406474 3.3365972 ]
# [3.42548713 3.84627297 9.95090327 7.28190884]]


常见操作

# 使用dtype指定其他数据类型(默认为float64)
arr = np.zeros((3, 2), dtype=np.int32)# np.int8/16/32/64,np.uint8/16/32/64,np.float32/64,bool,str....

# 使用astype转换数据类型
arr = np.ones((3, 2), dtype=str)
arr = arr.astype(int)
print(arr.dtype)#int32
print(arr)

# 运算(维度相同,同位置直接运算)
arr1 = np.array([1, 2, 3])
arr2 = np.array([4, 5, 6])
print(arr1 + arr2)# [5 7 9]
print(arr1 * arr2)# [4 10 18]
print(arr2 / arr1)# [4.  2.5 2. ]
print(arr1 - arr2)# [-3 -3 -3]
print(np.dot(arr1, arr2))# 点乘运算 32
print(arr1 @ arr2)# 矩阵乘法运算
np.sqrt(arr1)#开平方
np.sin(arr1),np.cos(arr1)# 三角函数运算
np.log(arr1),np.power(arr1,2)
arr1 * 2# [2 4 6],广播

# 不同尺寸的数组的运算,扩展为相同尺寸
eg:1   1   1		0  1  2
	10  10  10  +    0  1  2
	20  20  20       0  1  2
arr1 = np.array([[1],
                [10],
                [20]])
arr2 = np.array([0, 1, 2])
print(arr1 + arr2)
#结果为:
#[[ 1  2  3]
# [10 11 12]
# [20 21 22]]


# min,max,argmin,gmax,sum,mean,np.median(arr),var,std
arr = np.array([1, 2, 3, 4])
arr.min()# 1
arr.max()# 4
arr.argin()# 0(返回最小元素的索引)
arr.argmax()# 3(返回最大元素的索引)
arr.sum()# 10(返回总和)
arr.mean()# 平均值
np.median(arr)# 中位数
arr.var()# 方差
arr.std()# 标准方差

arr = np.array([1, 2, 3, 4, 5],
				[5, 6, 7, 8, 9]])
arr.sum(axis=0)# 行向量相加[6 8 10 12 14]
arr.sum(axis=1)# 列向量相加[15 35]
arr[0,1]# 2
arr[0,0:2]# [1 2]
arr[0]/arr[0,:][1 2 3 4 5]

arr = np.arange(10)
arr[arr < 4]# [0 1 2 3]
arr[arr < 8 & arr % 2 ==0]#[0 2 4 6]
arr[0: 9: 2]# [0 2 4 6 8]
arr[::-1] # [9 8 7 6 5 4 3 2 1 0]
print(arr[10: 1: -1]) #[9 8 7 6 5 4 3 2]

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值