gpt4 book ai didi

python - 使用每个元素 x 次将 python 数组映射到 x 倍长的数组

转载 作者:太空狗 更新时间:2023-10-30 00:52:49 25 4
gpt4 key购买 nike

我想在 python 3.x 中将列表或数组映射到数组中,输入 [a,b,c] 并得到类似 的结果[a*2, a*2+1, b*2, b*2+1, c*2, c*2+1]例如:

a = np.array([2,4,6])
result = []
for a1,a2 in zip(a*2, a*2+1):
result = result + [a1,a2]
print(result)
# Output: [4, 5, 8, 9, 12, 13]

一定有更好的方法。列表和 numpy 解决方案都可以。谢谢

最佳答案

一种方法:

import numpy as np

a = np.array([2, 4, 6])
b = np.repeat(2 * a, 2)
b[1::2] += 1
print(b)
# [ 4 5 8 9 12 13]

另一种方式:

b = np.stack([2 * a, 2 * a + 1], axis=1).ravel()

编辑:

如果您想要一个允许您将数组放大任何倍数(而不仅仅是 2)的解决方案,您可以使用如下函数:

import numpy as np

def make_longer(a, n):
b = np.tile(n * a[:, np.newaxis], (1, n))
b += np.arange(n, dtype=b.dtype)
return b.ravel()

a = np.array([2, 4, 6])
print(make_longer(a, 2))
# [ 4 5 8 9 12 13]
print(make_longer(a, 3))
# [ 6 7 8 12 13 14 18 19 20]

关于python - 使用每个元素 x 次将 python 数组映射到 x 倍长的数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53537845/

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