小编Sta*_*tav的帖子

检测Waze或Google地图移动版中的导航结束

我希望我的移动应用程序由Waze或Google Maps应用程序中的"导航结束"触发.在它最简单的形式中,我希望我的应用程序在用户从导航应用程序获得"您到达目的地"通知时执行某些操作.

我知道,至少在Android中,我可以通过创建意图来启动导航(在Waze或Google Maps应用程序中).然后,我可以在我的应用程序中运行自己的接近传感器,等待用户到达.但是,我想要更清洁的东西 - 用户需要的一切就是让我的应用程序在后台工作,然后让这个应用程序能够直接响应到达事件.

iOS或Android的解决方案非常受欢迎.Hacky解决方案也非常受欢迎.

谢谢

android google-maps ios

17
推荐指数
1
解决办法
1759
查看次数

熊猫数据框的静态类型/模式

有没有办法“静态”提示 Pandas DataFrame 的模式,以便我们可以在编码期间获得代码完成、静态类型检查和一般可预测性?

我不介意在代码中复制架构信息并键入注释以使其工作..

所以也许有点像 mypy 注释类型注释:

df = pd.DataFrame({'a': [1.0, 2.4, 4.5], 'B': [1,2,3]})  # pd.schema: ('a': np.dtype(float)), ('B': np.dtype(int))
Run Code Online (Sandbox Code Playgroud)

(或者最好在某些外部 JSON 文件等中指定架构)

然后,您可以将编码过程中的df.自动完成等内容映像为或。或者 mypy(以及任何其他静态代码分析器)能够推断出诸如此类的类型。df.adf.Bdf.B[0]

虽然充满希望,但我猜这不是真的可能(或想要的......)。如果是这样,编写返回pd.DataFrame具有特定列的 's 的良好可重用代码的良好标准是什么?所以想象一下,有一个函数get_data() -> pd.DataFrame返回包含预先知道的列的数据——你如何让这个函数的用户透明?有什么比在函数的文档字符串中拼写更智能/更标准化的吗?

python pandas

12
推荐指数
2
解决办法
2318
查看次数

在dask和pandas数据框中嵌套Numpy数组

适用于图像和音频的机器/深度学习代码的常见用例是加载和操纵图像或音频片段的大型数据集。这些数据集中的条目几乎总是由图像/音频段和元数据(例如,班级标签,培训/测试实例等)表示。

例如,在我的语音识别的特定用例中,数据集几乎总是由具有以下属性的条目组成:

  • 演讲者ID(字符串)
  • 成绩单(字符串)
  • 测试数据(布尔)
  • WAV数据(numpy数组)
  • 数据集名称(字符串)
  • ...

建议以大熊猫和/或dask表示这种数据集的推荐方法是-强调wav数据(在图像数据集中,这就是图像数据本身)?

在熊猫中,有一些技巧,可以将一列numpy数组嵌套在一个列中,但这不能很好地序列化,也不能使用dask。似乎这是一个非常普通的用例,但我找不到任何相关建议。

人们还可以将这些数组序列化/反序列化为二进制格式(Uber的petastorm做类似的事情),但这似乎错过了dask和pandas这样的库的要点,在库中自动幻化是核心优点之一。

我们欢迎任何实用的评论或对不同方法的建议。

python numpy pandas dask

10
推荐指数
1
解决办法
343
查看次数

vscode的python中mypy> = 0.780的“源文件发现两次”错误

在我的 python 项目中,mypy从 0.770升级到 0.782后,在以前没有类型错误的文件中收到错误:

my_pkg_name\__init__.py: error: Source file found twice under different module names: 'top_pkg.my_pkg_name' and 'my_pkg_name'
Found 1 error in 1 file (checked 1 source file)
Run Code Online (Sandbox Code Playgroud)

我很确定这与mypy上的问题 #8944以及 vscode-python 在打开的文件上执行 mypy 的方式有关。我尝试添加各种 mypy 标志(例如--namespace-packages, --no-namespace-packages),但这并没有解决问题。

my_pkg_name 确实包含一个__init__.py,所以也包含top_pkg。有了mypy==0.770这不是一个问题。

查看扩展的输出,这是调用 mypy 的方式:

> ~\.virtualenvs\OfflineSystem.38\Scripts\python.exe `
   c:\Users\***\.vscode\extensions\ms-python.python-2020.8.108011\pythonFiles\pyvsc-run-isolated.py mypy `
   --ignore-missing-imports --follow-imports=silent --show-column-numbers `
   d:\***\top_pkg\my_pkg_name\sub_pkg\my_file.py
Run Code Online (Sandbox Code Playgroud)

是否应该更改与 mypy 相关的 vscode 设置中的某些内容才能使其正常工作?

python visual-studio-code mypy vscode-python

6
推荐指数
1
解决办法
1632
查看次数

跨平台 Pipenv.lock

我的存储库中有一个“跨平台”Pipfile.lock文件,即包含以下条目:

"ptyprocess": {
    "hashes": [
        "sha256:923f299cc5ad920c68f2bc0bc98b75b9f838b93b599941a6b63ddbc2476394c0",
        "sha256:d7cc528d76e76342423ca640335bd3633420dc1366f258cb31d05e865ef5ca1f"
    ],
    "markers": "os_name != 'nt'",
    "version": "==0.6.0"
},
Run Code Online (Sandbox Code Playgroud)

这非常适合pipenv sync- 即当在 Windows 上运行时它不会安装ptyprocess,而当在 Linux 上运行时它会安装。但是,如果我pipenv install在 Windows 上安装新包,它会在锁定时删除上述条目Pipfile.lock。如果随后将锁定文件签入源代码管理(通常建议)并且 Linux 用户运行pipenv sync,则所需的包将不再存在。

这是期望的行为吗pipenv?如果是这样为什么?管理上述跨平台案例的正确方法是什么?

python cross-platform pipenv

5
推荐指数
0
解决办法
493
查看次数

重新排列列表基于键而不排序

我有一个元组列表,(x, ind)其中x是项目,ind它是结果列表中的目标索引.该列表是随机顺序,但可以假设如果N列表中有项目ind,则元组中的值将[0,N)不重复(即所有有效索引将仅存在一次).如何获得每个元组位置的列表ind

请不要混淆如何按键排序的许多现有答案.

显然,ind按键排序很容易,但由于前面提到的关于值的假设,因此操作O(n*logn)应该是不必要的额外成本.O(n)ind

所以:

l = [('item1',1), ('item0',0), ('item2',2), ('item4',4), ('item3',3)]
l2 = magic_rearrange(l, key=lambda x: x[1])
print(l2)
Run Code Online (Sandbox Code Playgroud)

应该给:

[('item0',0), ('item1',1), ('item2',2), ('item3',3), ('item4',4)]
Run Code Online (Sandbox Code Playgroud)

python algorithm list data-structures

2
推荐指数
1
解决办法
86
查看次数

内部类的实例作为外部类方法的默认值

我想使用内部类的实例(在这种情况下,namedtuple尽管对于定义的内部类,出现完全相同的症状class)作为外部类方法的默认值(在本例中为构造函数).但是,当从其他模块导入此代码时,外部类定义似乎缺失.

例:

# mymodule.py

from typing import NamedTuple, Tuple

class IdSignal():
    Cfg = NamedTuple('IdSignalCfg', [
        ('nfft', int),
        ('limits', Tuple[float, float]),
        ('min_spacing', float),
        ('nmix', int)])
    Cfg.__new__.__defaults__ = (
        512,
        (1500, 7500),
        200,
        3
    )

    def __init__(self, cfg = IdSignal.Cfg()):
        self.cfg = cfg
Run Code Online (Sandbox Code Playgroud)

现在执行import mymodule抛出:

Exception has occurred: NameError
name 'IdSignal' is not defined
  File "...", line 18, in IdSignal
    def __init__(self, cfg = IdSignal.Cfg()):
  File "...", line 5, in <module>
    class IdSignal():
  ...
    import mymodule …
Run Code Online (Sandbox Code Playgroud)

python oop python-3.x

1
推荐指数
1
解决办法
25
查看次数

OpenCV,支持Android的硬浮动

我想在我的Android应用程序中使用硬件浮点支持,这会大量使用OpenCV库.但是,当我为hard-float设置gcc标志时(如此此处所述),我得到链接器错误: XXX.o uses VFP register arguments, output does not.然后我添加链接器标志-Xlinker --no-warn-mismatch,使这些错误消失,但应用程序立即崩溃,似乎是与OpenCV库的第一次交互.

到底发生了什么?我是否正在编译我的代码的硬浮版本并将其与软浮动OpenCV相关联?

是否有一个OpenCV4Android版本的预构建二进制文件使用硬浮动架构?如果没有,是否可以编译这样的版本?如何做到这一点?在使用OpenCV时,是否有更智能的方法来利用硬件浮点支持?

c++ android opencv computer-vision android-ndk

0
推荐指数
1
解决办法
922
查看次数

TypeScript严格null检查数组中对象的字段

在TypeScript中,尽管在对象数组中的可空字段上检查为null(strictNullCheck设置为true),编译器仍然抱怨"对象可能未定义".考虑以下:

interface IA {
    d?: Date
}
const arr : IA[] = [{d: new Date()}];

console.error(arr[0].d == null ? "" : arr[0].d.toString());  
                                           // ^ complains that "Object is possibly 'undefined'
Run Code Online (Sandbox Code Playgroud)

链接到TS PlayGround(设置为strictNullCheck开)

但是,如果我们有:

const a : IA = {d: new Date()};
console.error(a.d == null ? "" : a.d.toString());
Run Code Online (Sandbox Code Playgroud)

然后编译器很高兴.

为什么这是理想的行为?如果我不想关闭strictNullCheck,那么这里的正确做法是什么?

typescript

0
推荐指数
1
解决办法
277
查看次数