1. 高维ndarray超出存储的应对之策
将数据分割成较小的单元来处理,而非一次性把全部数据集载入。如此操作能削减对内存的占用量。
运用Dask并行计算工具
import dask.array as da
# 构建一个 Dask 数组
data = da.random.random((5, 50, 300, 100, 30, 49), chunks=(1, 10, 100, 50, 10, 10))
# 对每个块开展处理
def handle_block(block):
# 在此处对块进行处理
print(f"正在处理形状为 {block.shape} 的块")
# 借助 Dask 进行计算
data.map_blocks(handle_block).compute()
运用Zarr库
import zarr
import numpy as np
# 创建一个 Zarr 数组
data = zarr.zeros((5, 50, 300, 100, 30, 49), chunks=(1, 10, 100, 50, 10, 10), dtype=np.float64)
# 对每个块进行处理
def deal_with_block(block):
# 在此处对块进行处理
print(f"处理形状为 {block.shape} 的块")
# 采用 Zarr 的块读取方式
for block in data.iter_chunks():
deal_with_block(block)
2. 随机数的生成
# linspace
x1 = np.linspace(4, 13, sample_num) # 生成4到13范围内含sample_num个随机数的序列
# random.randint
np.random.randint(0, m, 1) # 获取0到m范围内的1个整数
3. ndarray的拼接
x = np.concatenate(([x1], [x2]), axis=0)
4. dot函数的使用
np.dot(a,b) # 对矩阵a和矩阵b进行点乘运算
5. 数组多维转一维的方法
有ravel()
、flatten()
、squeeze()
这几种方法。ravel()
:一般不会生成源数据的副本;flatten()
:会返回源数据的副本;squeeze()
:只能对维度为1的维度进行降维处理。
6. repeat函数
7. ndarray维度的改变
a.reshape()
# 能够把数据的维度转换成所需的维度。
ndarray.reshape(x, y).astype(float)
# 接着转为tensor
8. 滑动窗口的构建
slide_arr1 = np.lib.stride_tricks.sliding_window_view(a1, 3) # 原数组,3是窗口大小,也能是元组,比如(2,2)
文章整理自互联网,只做测试使用。发布者:Lomu,转转请注明出处:https://www.it1024doc.com/12903.html