【发布时间】:2017-04-07 05:23:40
【问题描述】:
给定一个 3d numpy 数组,我想提取数字的 2 个最低有效位:
例如,让
img = [[[30, 31, 32],
[33, 34, 35],
[36, 37, 38],
[39, 40, 41],
[42, 43, 44]],
[[45, 46, 47],
[48, 49, 50],
[51, 52, 53],
[54, 55, 56],
[57, 58, 59]]]
其中每个像素[30,31,32]或[33,34,35]...等,分别代表R,G,B值
我想提取 2 个最低有效位并将这些数字连接起来以创建一个 6 位数字。
对于 ([30, 31, 32]),2 个 LSB 将分别为 10、11 和 00。 然后将其连接在一起形成 101100,即十进制的 44。目标是为给定数组中的每个“像素”制作一个数字列表。
我想对使用 numpy 操作且不使用 for 循环的数组中的每个“像素”执行此操作。
【问题讨论】:
-
为什么没有 for 循环?你试过什么?
-
@0xc0de:在 NumPy 数组上进行 for 循环与使用它们的其他方式相比非常非常慢。
-
我同意。我想这是一些编程练习,如果 OP 也考虑一下。
标签: python arrays list numpy bit-manipulation