Python使用numpy生成一维数组时输出为嵌套列表的问题求助
问题原因
你的代码存在两个核心错误:
- 赋值逻辑错误:
d=[d,c[r_max*I-J+3]]会把当前的d和新取到的numpy数组打包成新的二维列表,每循环一次就多一层嵌套,这就是你得到多层嵌套结构的原因。 - 你直接把numpy数组对象加入列表,打印时就会显示
array()前缀,且没有把数组内部的元素展开。
修改后代码
import numpy as np c=np.array([[1,11,21,31,5],[4,14,24,34,5], [7,17,27,37,5],[31,41,51,61,5],[34,44,54,64,5], [37,47,57,67,5],[61,71,81,91,5],[64,74,84,94,5], [64,74,84,94,5],[64,74,84,94,5], [64,74,84,94,5] ,[64,74,84,94,5],[64,74,84,94,5],[64,74,84,94,5], [64,74,84,94,5], [67,77,87,97,5]]) s=np.array([4,3,2,1]) r_max=np.max(s) d = [] x=4 for I in range(x-1,-2,-2): for J in range(r_max-s[I]): # 用extend方法把numpy数组的元素展开追加到列表,不做嵌套赋值 d.extend(c[r_max*I-J+3].tolist()) # 打印普通Python列表,和你预期的输出格式一致 print(d) # 如果需要numpy格式的一维数组,用下面的代码即可 # print(np.array(d))
运行后即可得到无嵌套、无array()前缀的一维序列。
内容的提问来源于stack exchange,提问作者science_lover20
相关产品推荐
相关产品推荐

