Python 与嵌套for循环相比,计算二维数组项的速度更快?
我正在使用python 2.7 我有一个二维数组,每个轴上有几百个元素。每个元素都是“0”或“255”。我需要查看每个元素,并将“0”或“1”写入具有相同维度的不同数组中。目前,我有一个嵌套的for循环结构,它遍历行和列 这真的很慢。什么是更好的实现?如果我将矩阵乘以常数1/255会怎么样。这将保持零为零,并将255转换为“1”。但这只是用循环换取大量倍数,这可能有其自身的速度问题Python 与嵌套for循环相比,计算二维数组项的速度更快?,python,Python,我正在使用python 2.7 我有一个二维数组,每个轴上有几百个元素。每个元素都是“0”或“255”。我需要查看每个元素,并将“0”或“1”写入具有相同维度的不同数组中。目前,我有一个嵌套的for循环结构,它遍历行和列 这真的很慢。什么是更好的实现?如果我将矩阵乘以常数1/255会怎么样。这将保持零为零,并将255转换为“1”。但这只是用循环换取大量倍数,这可能有其自身的速度问题 想法?我也会使用numpy.array进行快速数组操作,下面是一个示例: import numpy as np #
想法?我也会使用numpy.array进行快速数组操作,下面是一个示例:
import numpy as np
# Create an example array of shape (100, 100) filled with either 0 or 255
a = 255*np.random.randint(2, size=10000).reshape(100,100)
# Transform it as you want
1*(a==255)
听起来你需要这里。你用新阵列做什么?需要
1
s有什么办法吗?乘以1./255不是一个好主意。首先,如果要保留旧数组,还必须进行复制,并且要从int
更改为float
您实际拥有什么?列表列表(foo[y][x]
),平面列表或array.array(foo[y*w+x]
),带元组键的dict(foo[x,y]
)?对于平面表示,foo中x的[int(bool(x))
就可以了。你能给我们看看你的代码吗?还有数百个二维元素,需要毫秒才能执行?所以我不明白“慢”?