首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Np.where函数

Np.where函数
EN

Stack Overflow用户
提问于 2015-04-21 09:25:47
回答 1查看 682关注 0票数 1

我在理解numpy中的位置函数时遇到了一些小问题。“times”数组包含存在GPS测量值的离散时代(四舍五入到最近的秒)。“locations”数组包含卫星的纬度、经度和高度的离散值,该值从10秒间隔插入到1秒间隔的时间间隔。“tracking”数组包含“times”中每个时期的数组(数组中的数组)。数组有5列和32行。这32行对应于GPS星座的32颗卫星。第0行对应于第1颗卫星,第31行对应第32颗卫星。列包含以下内容(顺序):是卫星跟踪(0),是L1锁定(1),是L2锁定(2),是L1意外丢失(3),是L2意外丢失(4)

我们需要找到所有意想不到的损失,并将它们放在一个数组中,这样我们就可以在地图上绘制它。

我们试图做的是:

代码语言:javascript
复制
i = 0
with np.load(r’folderpath\%i.npz' %i) as oneday_data: #replace folderpath with your directory
    times = oneday_data['times']
    locations = oneday_data['locations']
    tracking = oneday_data['tracking']
A = np.where(tracking[:][:][4] ==1)

这应该给我们所有的损失头寸。有了这个指数,就很容易得到正确的位置。但它一直在返回无用的数据。

有人能帮我们吗?

EN

回答 1

Stack Overflow用户

发布于 2015-04-21 09:44:36

我想问题是你的双片。此外,拥有一个数组可能会导致奇怪的问题(我假设您指的是一个2D数组的对象数组)。

因此,我认为您需要将dstack tracking放入一个3D数组中,然后对其执行where。如果数组已经是3D的,那么可以跳过dstack部件。这将得到L2 is unexpectedly lost的位置,这就是您在示例中所做的:

代码语言:javascript
复制
tracking3d = np.dstack(tracking)
A0, A2 = np.where(tracking3d[:, 4, :]==1)

A01沿0 (卫星)轴的位置,而A2是同一1沿轴2 (time )的位置。

如果tracking的值只能是01,那么只需执行np.where(tracking3d[:, 4, :])就可以简化。

您还可以将轴滚回您所使用的配置(0:时间周期,1:卫星,2:跟踪状态)

代码语言:javascript
复制
tracking3d = np.rollaxis(np.dstack(tracking), 2, 0)
A0, A1 = np.where(tracking3d[:, :, 4]==1)

如果要查找L1或L2意外丢失的位置,可以这样做:

代码语言:javascript
复制
tracking3d = np.rollaxis(np.dstack(tracking), 2, 0)
A0, A1, _ = np.where(tracking3d[:, :, 3:]==1)

在这种情况下,它是相同的,除了有一个虚拟变量_用于沿上一个轴的位置,因为您不关心它是为L1还是L2丢失的(如果您关心,您只需要对每个轴独立地执行np.where )。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29768087

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档