既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上大数据知识点,真正体系化!
由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新
-*- coding = utf-8 -*-
@Time : 2022/6/29 9:50
@Author : lxw_pro
@File : Numpy库学习-1.py
@Software : PyCharm
Numpy的基本使用
‘’’
Numpy提供了两种基本的对象:ndarray存储单一数据类型的多维数组;
ufunc是能够对数组进行处理的函数
1-导入函数
import numpy as np
2-数组创建
2-1 array 可将列表或元组转化为ndarray数组
2-2 arange 在给定区间内创建等差数组,格式:
arange(start=None, stop=None, step=None,dtype=None)
【step表示步长间隔】
2-3 linspace 在给定区间内创建间隔相等的数组,格式:
linspace(start, stop, num=50, endpoint=True)
【间隔相等的num个数据,其num默认值是50】
2-4 logspace 在给定区间内生成等比数组,格式:
logspace(start, stop, num=50, endpoint=True, base=10.0)
【默认生成区间[10start(次方), 10stop()次方]上的num个数据的等比数组】
以及 ones、zeros、empty和ones_like等系列函数的运用:
‘’’
---
#### 1-numpy.array
numpy.array
array()函数,括号内可以是列表、元组、数组、迭代对象、生成器
import numpy as np
print(np.array([6, 6, 6])) # 列表
print(np.array((8, 8, 8))) # 元组
print(np.array(np.array([9, 9, 9]))) # 数组
print(np.array(range(10))) # 迭代对象 / 整型
print(np.array([i**2 for i in range(10)])) # 生成器
创建10以内的奇数的数组:
print(np.array([i for i in range(1, 10, 2)]))
print(np.array([i for i in range(10) if i % 2 != 0]))
创建10以内的偶数的数组:
print(np.array([i for i in range(0, 10, 2)]))
print(np.array([i for i in range(10) if i % 2 == 0]))
列表中元素类型不相同
print(np.array([5, 2, ‘0’])) # [‘5’ ‘2’ ‘0’]
浮点型
print(np.array([3, 4, 5.2]))
二维数组:【嵌套序列(列表、元组均可)】
print(np.array([[6, 7, 8], (‘lxw’, ‘cw’, ‘wl’)]))
print(np.array([[6, 7, 8], (‘lxw’, ‘cw’, ‘wl’)]).ndim) # ndim(维度): 2
嵌套数量不一致:【强制转化为一维,推荐不用】
print(np.array([[6, 7, 8], (‘lxw’, ‘cw’, ‘wl’, ‘npy’)], dtype=object))
print(np.array([[6, 7, 8], (‘lxw’, ‘cw’, ‘wl’, ‘npy’)], dtype=object).ndim) # ndim(维度):1
print(np.array([[6, 7, 8], (‘lxw’, ‘cw’, ‘wl’, ‘npy’)], dtype=object).shape) # 运行结果:(2,)
print(np.array([[6, 7, 8], [9, 9, 6, 9]], dtype=object))
print(np.array([[6, 7, 8], [9, 9, 6, 9]], dtype=object).ndim) # ndim(维度):1
print(np.array([[6, 7, 8], [9, 9, 6, 9]], dtype=object).shape) # 运行结果:(2,) -> 代表两行一列
---
#### 2-numpy.empty
numpy.empty
‘’’
numpy.empty 方法用来创建一个指定形状(shape)、数据类型(dtype)且未初始化的数组
numpy.empty(shape, dtype = float, order = ‘C’)
参数说明:
参数 描述
shape 数组形状
dtype 数据类型,可选
order 有"C"和"F"两个选项,分别代表,行优先和列优先,在计算机内存中的存储元素的顺序
‘’’
import numpy as np
lxw = np.empty([3, 4], dtype=int)
print(lxw) # 注意:数组元素为随机值,因为它们未初始化
---
#### 3-numpy.zeros
numpy.zeros
‘’’
创建指定大小的数组,数组元素以 0 来填充:
numpy.zeros(shape, dtype = float, order = ‘C’)
参数说明:
order : ‘C’ 用于 C 的行数组,或者 ‘F’ 用于 FORTRAN 的列数组
‘’’
import numpy as np
lxw = np.zeros(6) # 默认为浮点数
print(lxw)
lxw2 = np.zeros((6, ), dtype=int) # 设置类型为整数
print(lxw2)
自定义类型
lxw3 = np.zeros((2, 2), dtype=[(‘lxw’, ‘i2’), (‘lxw2’, ‘i4’)])
print(lxw3)
---
#### 4-numpy.ones
numpy.ones
‘’'创建指定形状的数组,数组元素以 1 来填充:
numpy.ones(shape, dtype = None, order = ‘C’)
‘’’
import numpy as np
lxw4 = np.ones(8) # 默认浮点数
print(lxw4)
lxw5 = np.ones([2, 2], dtype=int)
print(lxw5)
---
### 1 NumPy 从已有的数组创建数组
#### 1-numpy.asarray
numpy.asarray
‘’’
numpy.asarray 类似 numpy.array,但 numpy.asarray 参数只有三个,比 numpy.array 少两个。
numpy.asarray(a, dtype = None, order = None)
参数说明:
参数 描述
a 任意形式的输入参数,可以是,列表, 列表的元组, 元组, 元组的元组, 元组的列表,多维数组
‘’’
将列表转换为 ndarray:
import numpy as np
x = [5, 2, 0]
lxw6 = np.asarray(x)
print(lxw6)
将元组转换为 ndarray
import numpy as np
x2 = (1, 3, 1, 4)
lxw7 = np.asarray(x2)
print(lxw7)
设置了 dtype 参数
import numpy as np
x4 = [6, 6, 9]
lxw9 = np.asarray(x4, dtype=float)
print(lxw9)
---
#### 2-numpy.frombuffer
numpy.frombuffer
‘’’
numpy.frombuffer 用于实现动态数组;接受 buffer 输入参数,以流的形式读入转化成 ndarray 对象。
格式如下:
numpy.frombuffer(buffer, dtype = float, count = -1, offset = 0)
注:buffer 是字符串的时候,Python3 默认 str 是 Unicode 类型,所以要转成 bytestring 在原 str 前加上 b。
参数说明:
参数 描述
buffer 可以是任意对象,会以流的形式读入。
dtype 返回数组的数据类型,可选
count 读取的数据数量,默认为-1,读取所有数据。
offset 读取的起始位置,默认为0
‘’’
import numpy as np
s = b’lxw_pro’
lxw10 = np.frombuffer(s, dtype=‘S1’)
print(lxw10)
---
#### 3-numpy.fromiter
numpy.fromiter
‘’’
numpy.fromiter 方法从可迭代对象中建立 ndarray 对象,返回一维数组。
numpy.fromiter(iterable, dtype, count=-1)
‘’’
import numpy as np
lst = range(6)
it = iter(lst)
lxw11 = np.fromiter(it, dtype=float)
print(lxw11)
---
### 2 NumPy 从数值范围创建数组
#### 1-numpy.arange
numpy.arange
‘’’
numpy 包中的使用 arange 函数创建数值范围并返回 ndarray 对象,函数格式如下:
numpy.arange(start, stop, step, dtype)
根据 start 与 stop 指定的范围以及 step 设定的步长,生成一个 ndarray。
参数说明:
参数 描述
start 起始值,默认为0
stop 终止值(不包含)
step 步长,默认为1
dtype 返回ndarray的数据类型,如果没有提供,则会使用输入数据的类型
‘’’
生成0和5的数组
import numpy as np
a = np.arange(6)
print(a)
设置返回类型位 float
import numpy as np
a2 = np.arange(6, dtype=float)
print(a2)
设置了起始值、终止值及步长
import numpy as np
a3 = np.arange(20, 52, 5)
print(a3)
---
#### 2-numpy.linspace
numpy.linspace
‘’’
numpy.linspace 函数用于创建一个一维数组,数组是一个等差数列构成的,格式如下:
np.linspace(start, stop, num=50, endpoint=True, retstep=False, dtype=None)
参数说明:
参数 描述
start 序列的起始值
stop 序列的终止值,如果endpoint为true,该值包含于数列中
num 要生成的等步长的样本数量,默认为50
endpoint 该值为 true 时,数列中包含stop值,反之不包含,默认是True。
retstep 如果为 True 时,生成的数组中会显示间距,反之不显示。
dtype ndarray 的数据类型
‘’’
类似等差数列
import numpy as np
a4 = np.linspace(1, 10, 5)
print(a4)
设置元素全部是1的等差数列
import numpy as np
a5 = np.linspace(1, 1, 10)
print(a5)
将 endpoint 设为 false,不包含终止值
import numpy as np
a6 = np.linspace(8, 22, 4, endpoint=False)
print(a6)
注:将 endpoint 设为 true,则会包含 22
a6 = np.linspace(8, 22, 4, endpoint=True)
print(a6)
设置间距
import numpy as np
a7 = np.linspace(5, 10, 5).reshape([5, 1])
print(a7)
#### 3-numpy.logspace
numpy.logspace
‘’’
numpy.logspace 函数用于创建一个于等比数列。格式如下:
np.logspace(start, stop, num=50, endpoint=True, base=10.0, dtype=None)
base 参数意思是取对数的时候 log 的下标。
参数 描述
start 序列的起始值为:base ** start
stop 序列的终止值为:base ** stop。如果endpoint为true,该值包含于数列中
num 要生成的等步长的样本数量,默认为50
endpoint 该值为 true 时,数列中中包含stop值,反之不包含,默认是True。
base 对数 log 的底数。
dtype ndarray 的数据类型
‘’’
import numpy as np
a8 = np.logspace(1, 2, num=10) # 默认底数是 10
print(a8)
将对数的底数设置为 2
import numpy as np
a9 = np.logspace(0, 8, 9, base=2)
print(a9)
---
---
### 综合运用【array、arange、linspace、lonspace】:
综合运用
import numpy as np
ltw = np.array([3, 3, 4, 4]) # 生成整型数组
ltw2 = ltw.astype(float) # 转为浮点数
ltw3 = np.array([5, 2, 1], dtype=float) # 浮点数
print(ltw)
print(ltw2)
print(ltw3)
比较类型
print(ltw.dtype, ltw2.dtype, ltw3.dtype)
aa = np.array([
[2, 5, 8],
[9, 6, 2]
])
print(aa)
bb = np.arange(2, 9)
print(bb) # 运行结果为:[2 3 4 5 6 7 8]
cc = np.linspace(2, 5, 4)
print(cc) # 运行结果为:[2. 3. 4. 5.]
dd = np.logspace(1, 4, 4, base=2) # base控制的是几次方
print(dd) # 运行结果为:[ 2. 4. 8. 16.]
---
---
### 综合运用【ones、zeros、empty、ones\_like】
综合运用【ones、zeros、empty、ones_like】
import numpy as np
a = np.ones(6, dtype=int)
print(a) # 运行结果为:[1 1 1 1 1 1]
b = np.ones((6,), dtype=int)
print(b) # 运行结果为:[1 1 1 1 1 1]
c = np.ones((3, 1))
print© # 输出3行一列的数组
运行结果为:
[[1.]
[1.]
[1.]]
d = np.zeros(4)
print(d) # 运行结果为:[0. 0. 0. 0.]
e = np.empty(3)
print(e) # 生成3个元素的空数组行向量
运行结果为:[1. 1. 1.]
f = np.eye(3)
print(f) # 生成3阶单位阵
运行结果为:
[[1. 0. 0.]
[0. 1. 0.]
[0. 0. 1.]]
g = np.eye(3, k=1)
print(g) # 生成第k对角线的元素为1,其他元素为0的3阶方阵
运行结果为:
[[0. 1. 0.]
[0. 0. 1.]
[0. 0. 0.]]
h = np.zeros_like(b)
print(h) # 生成与a同维数的全0数组
运行结果为:[0 0 0 0 0 0]
---
### 3 NumPy 切片和索引
-*- coding = utf-8 -*-
@Time : 2022/6/29 14:30
@Author : lxw_pro
@File : Numpy 切片和索引-6.py
@Software : PyCharm
NumPy 切片和索引
‘’’
ndarray对象的内容可以通过索引或切片来访问和修改,与 Python 中 list 的切片操作一样。
ndarray 数组可以基于 0 - n 的下标进行索引,
切片对象可以通过内置的 slice 函数,并设置 start, stop 及 step 参数进行,从原数组中切割出一个新数组
‘’’
import numpy as np
通过 arange() 函数创建 ndarray 对象
a = np.arange(10)
lxw = slice(2, 9, 3) # 索引从2到9,间隔为3
print(a[lxw]) # [2 5 8]
通过切片操作
a = np.arange(10)
lxw2 = a[2:9:3] # 这里的切片操作和Python中list的操作是一样的
print(lxw2) # [2 5 8]
比如:
import numpy as np
lxw3 = np.arange(10)
print(lxw3[6]) # 6
print(lxw3[6:]) # [6 7 8 9]
print(lxw3[2:7]) # [2 3 4 5 6]
多维数组同样适用上述索引提取方法
import numpy as np
lxw4 = np.array([
[6, 6, 6],
[5, 2, 0],
[5, 8, 9]
])
print(lxw4)
print(lxw4[1:])
切片还可以包括省略号 …,来使选择元组的长度与数组的维度相同。
如果在行位置使用省略号,它将返回包含行中元素的 ndarray
import numpy as np
lxw5 = np.array([
[1, 2, 9],
[2, 5, 4],
[3, 4, 8]
])
print(lxw5[1, …]) # [2 5 4] 第二行元素
print(lxw5[…, 2]) # [9 4 8] 第三列元素
print(lxw5[1:, …]) # 第二行及剩下元素
print(lxw5[…, 1:]) # 第二列及剩下元素
---
### 4 NumPy 高级索引
Numpy中的`array`数组与Python基础数据结构列表(`list`)的`区别`是:
* 列表中的元素可以是不同的数据类型
* array数组只允许存储相同的数据类型
>
> NumPy 比一般的 Python 序列提供更多的索引方式。
>
>
>
*除了之前看到的用整数和切片的索引外,数组可以由*
* 整数数组索引
* 布尔索引
* 花式索引
#### 1-整数数组索引
1-整数数组索引
import numpy as np
b = np.array([
[6, 2, 9],
[4, 3, 9],
[5, 2, 3]
])
lxw6 = b[
[0, 1, 2], [1, 2, 1]
]
print(lxw6) # 输出 [2 9 2]
获取四个角元素
import numpy as np
aq = np.array([
[1, 2, 3, 4],
[2, 3, 4, 5],
[3, 4, 5, 6],
[4, 5, 6, 7]
])
print(aq)
hj = np.array([[0, 0], [3, 3]])
lj = np.array([[0, 3], [0, 3]])
yq = aq[hj, lj]
print(yq)
print()
可借助切片 : 或 … 与索引数组组合:
import numpy as np
jz = np.array([
[3, 5, 9],
[5, 2, 6],
[2, 9, 8]
])
jz1 = jz[:2, :2]
print(jz1)
jz2 = jz[:2, [0, 1]]
print(jz2)
jz3 = jz[…, 1:]
print(jz3)
---
#### 2-布尔索引
布尔索引
布尔索引可通过布尔运算(如:比较运算符)来获取符合指定条件的元素的数组
获取大于5的元素:
import numpy as np
br = np.array([
[6, 7, 8],
[5, 2, 1],
[6, 6, 9],
[2, 4, 5]
])
print(br)
print(br[br > 5]) # 输出 [6 7 8 6 6 9]
使用 ~(取补运算符)来过滤 NaN:
import numpy as np
bu = np.array([5, np.nan, 2, 0, np.nan, np.nan, 5, 8])
print(bu[~np.isnan(bu)]) # 输出 [5. 2. 0. 5. 8.]
从数组中过滤掉非复数元素:
import numpy as np
lv = np.array([2+2.9j, 4, 9, 2+8.2j, 8])
print(lv[np.iscomplex(lv)]) # 输出 [2.+2.9j 2.+8.2j]
![img](https://img-blog.csdnimg.cn/img_convert/77c30fbf132122e7225d4b587d7d1ada.png)
![img](https://img-blog.csdnimg.cn/img_convert/9c53cfd2d7be1bbcde86eeb03cfb5f30.png)
![img](https://img-blog.csdnimg.cn/img_convert/71cc1108d0c3b0dd9ab55644a8120396.png)
**既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上大数据知识点,真正体系化!**
**由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新**
**[需要这份系统化资料的朋友,可以戳这里获取](https://bbs.csdn.net/forums/4f45ff00ff254613a03fab5e56a57acb)**
br = np.array([
[6, 7, 8],
[5, 2, 1],
[6, 6, 9],
[2, 4, 5]
])
print(br)
print(br[br > 5]) # 输出 [6 7 8 6 6 9]
# 使用 ~(取补运算符)来过滤 NaN:
import numpy as np
bu = np.array([5, np.nan, 2, 0, np.nan, np.nan, 5, 8])
print(bu[~np.isnan(bu)]) # 输出 [5. 2. 0. 5. 8.]
# 从数组中过滤掉非复数元素:
import numpy as np
lv = np.array([2+2.9j, 4, 9, 2+8.2j, 8])
print(lv[np.iscomplex(lv)]) # 输出 [2.+2.9j 2.+8.2j]
[外链图片转存中…(img-JRqo5vSE-1715284965583)]
[外链图片转存中…(img-KHm4V9r2-1715284965583)]
[外链图片转存中…(img-n3vLd4TM-1715284965584)]
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上大数据知识点,真正体系化!
由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新