gpt4 book ai didi

python - 从现有列表创建新数组

转载 作者:行者123 更新时间:2023-12-01 06:31:33 25 4
gpt4 key购买 nike

我有一个给定的数组,我想从第一个值开始获取每个第三个值并将其 append 到一个新列表中。我可以获取我想要的值,但它返回为 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]]

最佳答案

您应该能够使用 l[:,::3] 直接在凹凸中对此进行索引:

import numpy as np

l = np.array([
[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]
])

l[:,::3]

结果

array([[ 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]])

(另外,不要将变量命名为 list)

关于python - 从现有列表创建新数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59889556/

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