python - 从现有列表创建新数组
问题描述
我有一个给定的数组,我想从第一个值开始获取每个第三个值并将其附加到一个新列表中。我可以取我想要的值,但它以1 x 28
数组的形式返回。我希望它作为4 x 7
数组返回。我怎么能告诉它当它到达第一行的末尾时开始新的一行?
代码:
import numpy as np
list = [
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20],
[2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21],
[3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22],
[4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23]
]
newlist = []
list = np.array(list)
for row in list:
k = 0
for value in row:
if k % 3 == 0:
newlist.append(value)
else:
pass
k += 1
newlist = np.array(newlist)
print(newlist)
输出:
[ 1 4 7 10 13 16 19 2 5 8 11 14 17 20 3 6 9 12 15 18 21 4 7 10 13 16 19 22]
期望的输出:
[[ 1 4 7 10 13 16 19 ][ 2 5 8 11 14 17 20 ][ 3 6 9 12 15 18 21 ][ 4 7 10 13 16 19 22]]
解决方案
尝试使用::3
带有列表理解的切片:
l = [
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20],
[2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21],
[3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22],
[4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23]
]
print(np.array([i[::3] for i in l]))
要了解有关切片的更多信息,请查看此处:
推荐阅读
- flutter - 用于运行 onnx 模型的颤振插件
- nvidia - 在 Jetson nano 和 jetson xavier 上运行 Nvidia-docker 以实现 tensorflow 等深度学习框架
- git - 在处理其他项目时如何在 vs 代码中关闭终端中的当前 git 存储库
- spartacus-storefront - 如何在斯巴达克斯中自定义核心组件?
- vue.js - Google Analytics 在我的 vuepress 项目中不起作用
- json - 我可以在 AWS IAM 策略中的资源 arn 中使用 PrincipalTag 来授权团队吗?
- python - 树莓派运行启动python脚本无法发送HTTP请求
- flutter - 我们如何使加载器小部件flutter_spinkit居中?
- javascript - 从 Revolut API 获取刷新访问令牌时缺少 client_secret
- python - 如何在 Python Click 程序上修改回上下文或在命令之间共享修改后的值