Python 语法基础 Numpy

本文介绍了Python的Numpy库,强调其高效数组操作和矩阵计算能力。通过示例展示了创建、操作数组的方法,如`np.array()`, `np.arange()`, `np.linspace()`等,并讲解了`shape`, `dtype`属性,以及矩阵乘法、统计函数(如`sum()`, `max()`, `mean()`, `std()`, `percentile()`, `median()`)的使用。文章还讨论了加权平均、排序功能和数组转置,帮助读者掌握Numpy进行数值计算的核心概念。" 81634780,5040481,Python列表推导式详解,"['Python', '编程技巧', '数据处理']

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

NumPy相对Python更高级和更高效,数组存储在均匀连续的内存块,节约计算资源;矢量化的指针指令和多线程矩阵计算提升计算效率;避免隐氏拷贝,采取就地操作。

基本属性shape,dtype

import numpy as np

np.array()

a = np.array([0,1,2,3])
a
array([0, 1, 2, 3])
b = np.array([[0,1,2],[3,4,5]]) #2-D, 2row x 3col
b
array([[0, 1, 2],
       [3, 4, 5]])

np.arange() #开始值、终值和步长

np.arange(10)
array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])

np.arange(1,6,2)
array([1, 3, 5])

np.linspace() #开始值、终值和元素个数

np.ones()

np.zeros()

np.eye()

np.diag()

np.repeat()

np.vstack()

np.hstack()

 

shape()

reshape()

resize()

T() #转置

dot() #矩阵乘法,两个矩阵的点积

 

所得到的数组中的每个元素为,第一个矩阵中与该元素行号相同的元素与第二个矩阵与该元素列号相同的元素,两两相乘后再求和。

这句话有点难理解,但是这句话里面没有哪个字是多余的。结合下图理解这句话。

3.dot()函数可以通过numpy库调用,也可以由数组实例对象进行调用。a.dot(b) 与 np.dot(a,b)效果相同。

矩阵积计算不遵循交换律,np.dot(a,b) 和 np.dot(b,a) 得到的结果是不一样的。

 

 

 

Numpy has many built in math functions that can be performed on arrays.

a = np.array([-4, -2, 1, 3, 5])


a.sum()


a.max()


a.min()


a.mean()


a.std()

x1 = np.arange(1,11,2)
x2 = np.linspace(1,9,5)
print(np.add(x1,x2))
print(np.subtract(x1,x2))
print(np.multiply(x1,x2))
print(np.divide(x1,x2))
print(np.power(x1,x2))
print(np.remainder(x1,x2))
print(np.mod(x1,x2))


argmax and argmin return the index of the maximum and minimum values in the array.

a.argmax()
a.argmin()
a.argmin()

a = np.array([[1,2,3],[4,5,6],[7,8,9]])
print(np.amin(a))
print(np.amin(a,0)) #axis=0, [1,4,7],[2,5,8],[3,6,9] 以列来看
print(np.amin(a,1)) #axis=1, [1,2,3],[4,5,6],[7,8,9] 以行来看
print(np.amax(a))
print(np.amax(a,0))
print(np.amax(a,1))

最大值和最小值只差

a = np.array([[1,2,3],[4,5,6],[7,8,9]])

print(np.ptp(a))
print(np.ptp(a,0))
print(np.ptp(a,1))
8
[6 6 6]
[2 2 2]

 

统计数组的百分位数

a = np.array([[1,2,3],[4,5,6],[7,8,9]])

print(np.percentile(a,50))
print(np.percentile(a,50,axis=0))
print(np.percentile(a,50,axis=1))

5.0
[4. 5. 6.]
[2. 5. 8.]

统计数组中的中位数,平均数

#求中位数
print(np.median(a))
print(np.median(a,axis=0))
print(np.median(a,axis=1))
#求平均数
print(np.mean(a))
print(np.mean(a,axis=0))
print(np.mean(a,axis=1))

5.0
[4. 5. 6.]
[2. 5. 8.]
5.0
[4. 5. 6.]
[2. 5. 8.]

 

统计数组中的加权平均值 

a = np.array([1,2,3,4])
wts = np.array([1,2,3,4])
print(np.average(a))
print(np.average(a, weights=wts)

#(1*1+2*2+3*3+4*4)/(1+2+3+4)=3.0

2.5
3.0

统计数组中的标准差,方差

a = np.array([1,2,3,4])
print(np.std(a))
print(np.var(a))

1.118033988749895
1.25

 

排序

a = np.array([[4,3,2],[2,4,1]])
print(np.sort(a)) #axis default = -1,沿着数组的最后一个轴进行排序
print(np.sort(a,axis=None)) #平铺排序
print(np.sort(a, axis=0)) #纵轴排序
print(np.sort(a,axis=1)) #横轴排序

[[2 3 4]
 [1 2 4]]
[1 2 2 3 4 4]
[[2 3 1]
 [4 4 2]]
[[2 3 4]
 [1 2 4]]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值