numpy数组

#%% md

### **为什么numpy比原生python快?**

#%%

import numpy as np
import time
# 验证:numpy计算⽐原⽣python好
start_time = time.time()
numbers = list(range(1,1000000))
total = sum(numbers)
end_time = time.time()
print('原⽣Python计算100万个元素的和耗时:',total,end_time - start_time)

start_time2 = time.time()
# arange numpy里带的数组函数
numbers2 = np.arange(1,1000000).astype(np.int64)  # astype转成整数64位
total2 = np.sum(numbers2)
end_time2 = time.time()
print('NumPy计算100万个元素的和耗时:',total2,end_time2 - start_time2)

#%% md

### **创建一维数组**

#%%

# 列表进行转换
a = np.array([1,2,3])
a

#%%

print(a,type(a))   # <class 'numpy.ndarray'>表示数组

#%%

# np.arange()
a = np.arange(10)   # 和range()类似
print(a,type(a))

#%%

arl = np.linspace(2.0,3.0,num=5)  # 2.0-3.0之间取5等数,等距
print(arl)

#%% md

### **创建二维数组**

#%%

lst = [[1,2],[3,4],[5,6]]
# 创建一个2*3的二维数组
t = np.array(lst)
print(t)

#%%

lst = [[1.0,2],[3,4],[5,6]]  # 只要有一个有精确,那么所以的都会精确
t = np.array(lst)
print(t)

#%%

np.zeros((3,4))  # 创建⼀个3*4的全零⼆维数组

#%%

np.ones((2,3))  # 创建⼀个2x3的全一⼆维数组

#%%

np.eye(2)  # 创建⼀个2x2的单位矩阵

#%% md

### **Numpy数组的运算**

#%%

arr1 = np.array([[1.,2.,3.],[4.,5.,6.]])
print(arr1)
print('-'*30)
print(arr1 + arr1)  # 对应位置元素进行相加
print('-'*30)
print(arr1 - arr1)
print('-'*30)
print(arr1 * arr1)
print('-'*30)
print(arr1 / arr1)

#%%

1/arr1  #广播机制  1/每一个

#%% md

### **基本的索引和切片**

#%%

lst = [1,2,3,4,5]
print(lst[1:3])

#%%

ar = np.arange(5,20)
print(ar)
print('-'*30)
print(ar[2:5])
print('-'*30)
print(ar[1::2])

#%%

# 二维数组
ar = np.arange(16).reshape(4,4)  # 用0-15创建一个4*4的二维数组
ar

#%%

ar[1]  # array([4, 5, 6, 7])  默认是取行

#%%

print(ar[:,1])  # 逗号前是行,逗号后是列

#%%

# 取6
print(ar[1,2])

#%%

# 取 5 6 9 10
print(ar[1:3,1:3])

#%% md

### **生活案例小实战**

#%%

# 假设的身高和体重数据
heights = np.array([1.65,1.75,1.20,1.70,1.60])
weights = np.array([65,70,80,75,55])

#%% md

### **常用统计函数**

#%%

exam_scores = np.array([85,69,85,98,85,32,47,69,88,69,65,64,57])
print('最大值',np.max(exam_scores))
print('最小值',np.min(exam_scores))
print('平均值',np.mean(exam_scores))

#%% md

### **where的使用**

#%%

arr1 = np.array([2,7,22,88,58])
# 按条件筛选,如果只有一个条件,返回的是符合条件对应的下标
np.where(arr1 > 30)

#%%

# 三元表达式:为真的结果if 条件 else为假的结果
# 满足条件,输出100,不满足则对应位置位-100
print(np.where(arr1 > 30,100,-100))

#%% md

### **数学公式**

#%%

p1 = np.array([1,2])
p2 = np.array([4,6])
# np.linalg 线性代数模块
distance = np.linalg.norm(p1 - p2)
distance

#%% md

### **图像处理**

#%%

import numpy as np
import matplotlib.pyplot as plt

# F:\python爬虫知识点\上课内容\25-js逆向4\js逆向.assets\1701958877286.png
n1 = plt.imread(r'F:\python爬虫知识点\上课内容\25-js逆向4\js逆向.assets\1701958877286.png')
plt.imshow(n1)
plt.show()

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容