np.searchsorted
没有找到正确的索引,但我认为这与数据类型有关。
在我看来,这个函数不能区分float和strs,但我不能将数组转换为float。
coord=Dataset(r"C:\\Users\\Admin\\AppData\\Local\\Programs\\Python\\Python311\\Lib\\site-packages\\coordenadas.nc",'r')
lat=coord.variables\['latitude'\]
lon=coord.variables\['longitude'\]
lat=np.array(lat,dtype=float)
lon=np.array(lon,dtype=float)
这会返回错误:
Traceback (most recent call last):
File "c:\\Users\\Admin\\AppData\\Local\\Programs\\Python\\Python311\\Lib\\site-packages\\extract.py", line 41, in \<module\>
lat=np.array(lat,dtype=float)
^^^^^^^^^^^^^^^^^^^^^^^^^
TypeError: Variable.__array__() takes no arguments (1 given)
当我试图将我正在搜索的元素变成一个float时:
coord=Dataset(r"C:\\Users\\Admin\\AppData\\Local\\Programs\\Python\\Python311\\Lib\\site-packages\\coordenadas.nc",'r')
lat=coord.variables\['latitude'\]
lon=coord.variables\['longitude'\]
x0=np.searchsorted(lat,float(x))
y0=np.searchsorted(lon,float(y))
这并没有给予我一个错误,但给了我最后一个可能的索引,这是不正确的,我注意到的是,对于负元素,这最后一个方法工作得很好。
1条答案
按热度按时间wvt8vs2t1#
如果你得到错误TypeError:Variable.array()没有参数(给定1个),这可能是因为你没有在变量对象后面放[:]。
关于代码片段的第二部分,看起来您试图使用
np.searchsorted
函数来查找lat
和lon
数组中分别最接近给定值x
和y
的值的索引。但是,np.searchsorted
函数期望输入数组按升序排序,因此在调用np.searchsorted
之前,应确保lat
和lon
已排序。或者,您可以使用np.argmin
函数来查找lat
和lon
中分别最接近x
和y
的元素的索引:请注意,我将
[:]
添加到lat
和lon
的末尾,以将它们的值提取为NumPy数组,而不是netCDF4变量。