数据是按时间顺序排列时间,纬度和经度的3D数组。我尝试使用np.where()
来给出所有最小值的索引,但它没有用。
print(np.where(n == msl.min))
它将结果显示为(array([], dtype=int64),)
,但我确实需要精确的经度和纬度。
答案 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
)。