np.argwhere与np.where区别
时间: 2023-08-16 18:13:52 浏览: 94
np.argwhere和np.where都是NumPy中用于查找数组中满足某个条件的元素索引的函数。它们的主要区别在于返回结果的形式和用法上。
np.where(condition)函数返回满足条件的元素的索引,以元组的形式表示。每个元组表示一个满足条件的元素的索引。如果数组是一维的,那么返回的结果是一个一维数组;如果数组是多维的,那么返回的结果是一个元组,其中每个元素是一个一维数组。
np.argwhere(condition)函数返回满足条件的元素的索引,以二维数组的形式表示。每一行表示一个满足条件的元素的索引。其中,每一行的第一个元素表示该元素在第0维的索引,第二个元素表示该元素在第1维的索引,以此类推。返回的结果是一个二维数组。
简而言之,np.where返回满足条件的元素索引的元组或数组,而np.argwhere返回满足条件的元素索引的二维数组。
相关问题
import numpy as np import cv2 def ComputeMinLevel(hist, pnum): index = np.add.accumulate(hist) return np.argwhere(index>pnum * 8.3 * 0.01)[0][0] def ComputeMaxLevel(hist, pnum): hist_0 = hist[::-1] Iter_sum = np.add.accumulate(hist_0) index = np.argwhere(Iter_sum > (pnum * 2.2 * 0.01))[0][0] return 255-index def LinearMap(minlevel, maxlevel): if (minlevel >= maxlevel): return [] else: index = np.array(list(range(256))) screenNum = np.where(index<minlevel,0,index) screenNum = np.where(screenNum> maxlevel,255,screenNum) for i in range(len(screenNum)): if screenNum[i]> 0 and screenNum[i] < 255: screenNum[i] = (i - minlevel) / (maxlevel - minlevel) * 255 return screenNum def CreateNewImg(img): h, w, d = img.shape newimg = np.zeros([h, w, d]) for i in range(d): imghist = np.bincount(img[:, :, i].reshape(1, -1)[0]) minlevel = ComputeMinLevel(imghist, h * w) maxlevel = ComputeMaxLevel(imghist, h * w) screenNum = LinearMap(minlevel, maxlevel) if (screenNum.size == 0): continue for j in range(h): newimg[j, :, i] = screenNum[img[j, :, i]] return newimg if __name__ == '__main__': img = cv2.imread('D:\shujuji\wu\\Image_20230225221250865.jpg') newimg = CreateNewImg(img) cv2.imshow('original_img', img) cv2.imshow('new_img', newimg / 200) cv2.waitKey(0) cv2.destroyAllWindows()修改调整图片大小
抱歉,根据您提供的代码,我无法直接回答您的问题。该代码是用Python和OpenCV库编写的图像处理程序,用于调整图像的亮度和对比度。如果您需要调整图片大小,可以使用OpenCV的resize()函数。例如,可以使用以下代码将图像大小调整为宽度为400像素,高度按比例缩放:
```python
resized_img = cv2.resize(img, (400, int(img.shape[0]*400/img.shape[1])))
```
其中,img是原始图像,resized_img是调整大小后的图像。您可以将其放置在CreateNewImg()函数后面,以获得调整大小后的图像。
获取数组a = np.array([1,2,3,2,3,4,3,4,5,6])和数组b = np.array([7,2,10,2,7,4,9,4,9,8])元素相匹配的位置
以下是获取数组a和数组b元素相匹配的位置的方法:
```python
import numpy as np
a = np.array([1,2,3,2,3,4,3,4,5,6])
b = np.array([7,2,10,2,7,4,9,4,9,8])
# 方法一:使用np.where()函数
matched_positions = np.where(a == b)[0]
print("Matched positions:", matched_positions)
# 方法二:使用np.argwhere()函数
matched_positions = np.argwhere(a == b).flatten()
print("Matched positions:", matched_positions)
```
阅读全文