You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Python对列表中的NumPy数组随机应用旋转和翻转操作

NumPy数组列表随机应用变换的实现方法

你传入numpy.random.choice的数组列表会被NumPy自动转换为高维数组,不符合该函数要求输入必须为1维的规则,因此抛出ValueError: a must be 1-dimensional错误。

实现思路

不需要直接对数组做抽样,改为提前定义所有可选变换的集合,对每个数组随机抽取一个变换应用即可,规避高维输入的问题。

完整代码示例

import numpy as np

# 你的原始NumPy数组列表,此处为示例数据
arr_list = [np.random.randint(0, 255, (28, 28)) for _ in range(20)]

# 定义可选变换:保持原样、rot90旋转、flip翻转
transform_ops = [
    lambda x: x,                # 保持原始状态
    lambda x: np.rot90(x),      # 逆时针旋转90度,可加k参数指定旋转次数:np.rot90(x, k=2)即旋转180度
    lambda x: np.flip(x)        # 全轴翻转,也可替换为np.fliplr(左右翻转)或np.flipud(上下翻转)
]

processed_list = []
for arr in arr_list:
    # 随机选择变换的索引,p参数可自定义各变换的概率,需和transform_ops长度一致,总和为1
    op_idx = np.random.choice(len(transform_ops), p=[0.4, 0.3, 0.3])
    processed_list.append(transform_ops[op_idx](arr))

可选调整项

  • 如需调整各类变换的占比,修改np.random.choice的p参数即可,比如设置80%保持原始、10%旋转、10%翻转的规则,改为p=[0.8, 0.1, 0.1]
  • 如需固定随机结果用于复现,在代码开头加np.random.seed(任意整数)即可

内容的提问来源于stack exchange,提问作者Coder

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 13:18:02