gpt4 book ai didi

python - 有效地从现有数组创建新的numpy数组

转载 作者:太空宇宙 更新时间:2023-11-03 14:23:06 26 4
gpt4 key购买 nike

我现有的 numpy 数组 (uint8) 如下所示:

(值为8位,我只对最后3位感兴趣)

[
[ 00000AAA, 00000BBB, 00000CCC ],
[ 00000FFF, 00000EEE, 00000DDD ],
[ 00000GGG, 00000HHH, 00000III ],
[ 00000LLL, 00000KKK, 00000JJJ ]
]

最后我想要这种形式的数据:

[01AAABBB, 01CCCDDD 01EEEFFF, 01GGGHHH, 01IIIJJJ, 01KKKLLL]

另外,每隔两行反转一次。

目前我有一段冗长而曲折的代码,逐行和逐个单元格地遍历原始列表,移动和添加数据,但这不够高效。

有什么好的、有效的方法可以解决这个问题吗?

最佳答案

这是一种使用 Numpy 内置命令和向量样式索引的方法,因此它非常紧凑(并且应该比迭代更快):

更新了评论中的建议

# Reverse direction of every second row
unsnaked_array = np.array(inp_array)
unsnaked_array[1::2] = inp_array[1::2, ::-1]

# Change to one long array
unsnaked_array = unsnaked_array.ravel()
unsnaked_array &= 0x7 # Extra safety :)

# Sum every pair of elements (with first element rolled) and add required bit
result_array = (unsnaked_array[::2]<<3) + unsnaked_array[1::2] + (1<<6)

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

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