找回密码
 立即注册
首页 业界区 业界 numpy
宇文之 2025-9-25 21:08:35
numpy相关
1. 高维ndarray,报错:超出存储,如何解决?

​        分块处理:将数据分成较小的块来处理,而不是一次性加载整个数据集。这样可以减少对内存的需求。
使用Dask并行计算库
  1. import dask.array as da
  2. # 创建一个 Dask 数组
  3. data = da.random.random((5, 50, 300, 100, 30, 49), chunks=(1, 10, 100, 50, 10, 10))
  4. # 对每个块进行处理
  5. def process_block(block):
  6.     # 在这里对块进行处理
  7.     print(f"Processing block with shape {block.shape}")
  8. # 使用 Dask 计算
  9. data.map_blocks(process_block).compute()
复制代码
使用Zarr
  1. import zarr
  2. import numpy as np
  3. # 创建一个 Zarr 数组
  4. data = zarr.zeros((5, 50, 300, 100, 30, 49), chunks=(1, 10, 100, 50, 10, 10), dtype=np.float64)
  5. # 对每个块进行处理
  6. def process_block(block):
  7.     # 在这里对块进行处理
  8.     print(f"Processing block with shape {block.shape}")
  9. # 使用 Zarr 的块读取
  10. for block in data.iter_chunks():
  11.     process_block(block)
复制代码
2. 产生随机数
  1. # linspace
  2. x1 = np.linspace(4, 13, sample_num) # 产生4-13范围内的sample_num个随机数
  3. # random.randint
  4. np.random.randint(0, m, 1)  # 产生0-m范围内的1个整数
复制代码
3. ndarray拼接
  1. x = np.concatenate(([x1], [x2]), axis=0)
复制代码
4. dot函数
  1. np.dot(a,b) #a、b矩阵点乘
复制代码
5. 数组多维转一维
  1. ravel()、flatten()、squeeze()
  2. ravel():                # 如果没有必要,不会产生源数据的副本
  3. flatten():                # 返回源数据的副本
  4. squeeze():                # 只能对维数为1的维度降维
复制代码
6. reapeat函数

7. ndarray改变维度
  1. a.reshape()
  2. # 可以将数据的维度变化成想要的维度。
  3. ndarray.reshape(x, y).astype(float)
  4. # 再转为tensor
复制代码
8. 滑动窗口
  1. slide_arr1 = np.lib.stride_tricks.sliding_window_view(a1, # 原数组 3 # 窗口大小,也可以是元组,如(2,2) )
复制代码
来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

相关推荐

2025-12-4 22:06:51

举报

您需要登录后才可以回帖 登录 | 立即注册