Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Python 3中向数组添加坐标_Python_Arrays_Numpy_Dataframe - Fatal编程技术网

在Python 3中向数组添加坐标

在Python 3中向数组添加坐标,python,arrays,numpy,dataframe,Python,Arrays,Numpy,Dataframe,所以我有图像数据,我正在迭代,为了找到像素,其中有有用的数据,我需要根据条件语句找到这些坐标,然后将它们放入数组或数据帧中。到目前为止,我掌握的代码是: pix_coor = np.empty((0,2)) for (x,y), value in np.ndenumerate(data_int): if value >= sigma3: pix_coor.append([x,y]) 其中数据只是一个图像数组(129129)。所有的像素值都大于sigma3是有用的,其他的我不

所以我有图像数据,我正在迭代,为了找到像素,其中有有用的数据,我需要根据条件语句找到这些坐标,然后将它们放入数组或数据帧中。到目前为止,我掌握的代码是:

pix_coor = np.empty((0,2))

for (x,y), value in np.ndenumerate(data_int):
  if value >= sigma3:
    pix_coor.append([x,y])
其中数据只是一个图像数组(129129)。所有的像素值都大于sigma3是有用的,其他的我不需要


创建一个空数组很好,但是当我附加这个数组时,它似乎不起作用,我需要得到一个数组,该数组有两列x和y值作为有用的像素。有什么想法吗?

在numpy中,array.append不是就地操作,而是将整个数组复制到新分配的内存中(大到足以容纳新值),并返回新数组。因此,应将其用作:

  new_arr = arr.append(values)
显然,这不是一种逐个添加元素的有效方法

对此,您可能应该使用常规的python列表

或者,使用所有值预先分配numpy数组,然后调整其大小:

 pix_coor = np.empty((data_int.size, 2), int)
 c = 0
 for (x, y), value in np.ndenumerate(data_int):
     if value >= sigma3:
         pix_coor[c] = (x, y)
         c += 1
 numpy.resize(pix_coor, (c, 2))
请注意,我使用了np.empty((data_int.size,2),int),因为您的坐标是整数,而numpy默认为浮点。

您可以简单地用于向量化解决方案-

pix_coor = np.argwhere(data_int >= sigma3)