如何用经度和纬度定位最小压力

时间:2016-04-19 12:20:34

标签: python arrays numpy

数据是按时间顺序排列时间,纬度和经度的3D数组。我尝试使用np.where()来给出所有最小值的索引,但它没有用。

print(np.where(n == msl.min))

它将结果显示为(array([], dtype=int64),),但我确实需要精确的经度和纬度。

3 个答案:

答案 0 :(得分:0)

您需要调用min()属性才能获得最小值:

Print(np.where(n == msl.min()))

问题是你没有括号来调用msl.min,它会返回一个函数对象。数组中的所有项都不等于函数,因此numpy.where会为您提供一个空数组。

答案 1 :(得分:0)

如果要查找列中的最小值/最大值,您将拥有一个numpy函数,其名称为: np.min() np.max

你可以做出类似的事情:

max_value = np.max(array['column_name'])
min_value = np.min(array['column_name'])

答案 2 :(得分:0)

我通过一个3D阵列模拟您的压力数据,该阵列填充了0到9的随机整数(分别是最小和最大模拟压力):

>>> msl = np.random.randint(0, 10, (2, 3, 4))
array([[[3, 7, 7, 0],
        [1, 0, 9, 8],
        [9, 4, 9, 4]],

       [[4, 2, 9, 8],
        [2, 4, 2, 5],
        [5, 4, 0, 4]]])

上面显示的玩具示例表示在2个不同时间,3个不同纬度和4个不同经度的一定幅度(即压力)的值。

以下代码为您提供压力最小值的时间,纬度和经度指数(即msl中0的位置):

>>> print np.transpose(np.where(msl==np.min(msl)))
[[0 0 3]
 [0 1 1]
 [1 2 2]]

请注意,您需要先执行np.random.seed(somevalue)才能在不同的运行中获得相同的结果(要重现显示的结果,您必须设置somevalue = 1000)。