我想和一个np.数组不需要转换np.数组先到一个列表(使程序减速到无法运行的水平)。在
这是我当前的代码:(请注意,我是从b、g、r rawCapture获取这些数据的,selection_数据只是一个预先设置的集合。)
def GreenCalculations(data):
data.reshape(1,-1,3)
data={tuple(item) for item in data[0]}
ColourCount=selection_data & set(data)
Return ColourCount
我现在的问题是,由于数据[0],我只比较了图片顶部的第一部分。是否可以遍历所有行?在
注意:tolist()需要很多时间。在
首先是一个示例
data
;我猜这是一个nxnx3数组,其数据类型为uint8
{t>在一个新的数组中返回一个新的方法:
^{pr2}$data.shape=(1,-1,3)
也能做到。但是为什么首字母1
?在取而代之的是:
^{3}$在我的例子中,有一组64个独特的项目-这并不奇怪,因为我是如何生成这些值的
你什么都不做
data.reshape
行和{tuple(item) for item in data[0]}
解释了为什么它似乎只在图片的第一行工作。在我猜
selection_data
是类似的3个项目元组,例如:您没有说明您试图在何处使用
tolist
,但我猜是在生成元组集时。在但奇怪的是,
tolist
加速了转换:因此,对于这种列表和集合操作,我们最好马上跳转到列表格式。在
numpy
有一些集合函数,例如np.in1d
。这只对1d数组进行操作,但是正如在一些unique row
问题中所演示的那样,我们可以通过将2d数组看作一个结构化数组来解决这个问题。我得摆弄才能走到这一步:构造具有相同结构化数组性质的选择:
因此
selection
中的项目也可以在data1
中找到:在
data1
中选择的项目包括:或是在未展开的形状
我用来生成
selection
的相同的(1,3)和(5,5)项。在in1d
时间安排很有竞争力:如果我正确地理解了您的问题(我不是百分之百确定我理解;但是使用与hpaulj相同的假设),您的问题就可以通过使用numpy_indexed软件包来解决:
也就是说,它将重塑后的数组和集合都视为长度为3ndarray的序列,并以矢量化的方式找到其中的交集。在
相关问题 更多 >
编程相关推荐