Python生成指定取值的numpy数组遇语法错误,该如何解决?
代码问题排查
你的代码存在以下几个核心错误:
- 未导入
random、numpy依赖库,运行时会直接抛出未定义错误 - 函数内部修改全局变量
i没有加global声明,会触发变量未定义报错 - 你生成的
new是列表类型,没有values()方法,调用new.values()属于非法操作 np.array(n) for n in new.values()[:3]是无意义的悬空生成器语法,没有赋值也没有执行,属于无效语法- 循环体内直接加了
return语句,第一次循环执行到就会直接退出函数,永远循环不到100次 - 整体逻辑混乱,不需要嵌套两层循环,也不需要额外的全局
test列表存储冗余数据
正确实现代码
要生成100组「包含两个长度为3、元素仅为-1/1的numpy数组」的结构,直接用下面的代码即可:
import random import numpy as np def testdata(): result = [] for _ in range(100): # 每组生成两个长度为3的随机数组,元素仅为-1和1 group = [np.array(random.choices([-1, 1], k=3)) for _ in range(2)] result.append(group) return result # 调用函数获取结果 all_data = testdata() # 打印前3组验证格式 print(all_data[:3])
输出示例
运行后输出的前3组格式如下,完全符合你要求的结构:
[ [array([-1, 1, -1]), array([ 1, -1, -1])], [array([ 1, -1, 1]), array([-1, -1, 1])], [array([-1, 1, 1]), array([-1, -1, -1])] ]
内容的提问来源于stack exchange,提问作者Learning and Improving
相关产品推荐
相关产品推荐

