gpt4 book ai didi

python - 简化 Python 中偶数点和非奇数点处两个 numpy 数组的合并

转载 作者:太空宇宙 更新时间:2023-11-04 10:01:06 24 4
gpt4 key购买 nike

我写了一个程序来完成这项工作,但它不是很 pythonic,不是 pythonic,而且绝对不漂亮。

程序必须按以下方式连接两个 numpy 数组:

例如 list0 和 list1 是输入

list0 = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
list1 = [ 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]

输出应该如下所示:

[0, 2, 1, 3, 2, 4, 3, 5, 4, 6, 5, 7, 6, 8, 7, 9, 8, 10, 9, 11]

所以基本上在输出的每个偶数点都放入list0的个数,在每个奇数点放入list1的个数。

我是 python 的新手,所以我用 C 风格编写了它:

import numpy as np



list0 = np.arange(10)
list1 = np.arange(2,12)

new = []
cnt0 = 0
cnt1 = 0
for i in range(0,2*len(list0)):
if i % 2 == 0:
new.append(list0[cnt0])
cnt0 = cnt0 +1;
else:
new.append(list1[cnt1])
cnt1 = cnt1 +1;

现在我想知道是否有更花哨、pythonic、更快的方法来实现相同的目标?

最佳答案

被 NumPy 标记,这是一个带有它的 -

np.vstack((list0, list1)).ravel('F').tolist()

ravel()此处使用 F 说明符以 fortran 顺序展平。

带有 np.c_ 的较短版本基本上将元素堆叠在列中 -

np.c_[list0,list1].ravel().tolist()

ravel() 此处以默认的 C 顺序展开,因此此处跳过。

如果要将最终输出保存为数组,请跳过方法中的 .tolist()

关于python - 简化 Python 中偶数点和非奇数点处两个 numpy 数组的合并,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43519906/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com