小编ARF*_*ARF的帖子

在字节对象上获取指向python memoryview的指针

我有一条蟒蛇memoryview指向一个bytes对象,我想在 cython 中对其执行一些处理。

我的问题是:

  • 因为 bytes对象不可写,cython 不允许从中构造类型化(cython)内存视图
  • 我也不能使用指针,因为我无法获得指向 memoryview 开始的指针

例子:

在蟒蛇中:

array = memoryview(b'abcdef')[3:]
Run Code Online (Sandbox Code Playgroud)

在cython中:

  • cdef char * my_ptr = &array[0] 无法编译消息: Cannot take address of Python variable
  • cdef char[:] my_view = array 运行时失败并显示以下消息: BufferError: memoryview: underlying buffer is not writable

怎么解决这个问题?

python pointers cython memoryview typed-memory-views

7
推荐指数
2
解决办法
4515
查看次数

Pandas:具有不等系列长度的布尔索引

鉴于两个熊猫系列对象A和匹配.匹配包含A的索引的子集并具有布尔条目.一个人如何做相当于逻辑索引?

如果匹配的长度与A相同,则可以使用:

A[Matches] = 5.*Matches
Run Code Online (Sandbox Code Playgroud)

匹配短于A的人得到:

error: Unalignable boolean Series key provided
Run Code Online (Sandbox Code Playgroud)

编辑1:按要求插图

In [15]: A = pd.Series(range(10))

In [16]: A
Out[16]: 0    0
1    1
2    2
3    3
4    4
5    5
6    6
7    7
8    8
9    9
dtype: int64

In [17]: Matches = (A<3)[:5]

In [18]: Matches
Out[18]: 0     True
1     True
2     True
3    False
4    False
dtype: bool

In [19]: A[Matches] = None
---------------------------------------------------------------------------
IndexingError                             Traceback (most recent call last)
<ipython-input-19-7a04f32ce860> in <module>() …
Run Code Online (Sandbox Code Playgroud)

python pandas

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

如何单元测试/模拟requests.get(url)及其响应

我无法对使用Kenneth Reitz的请求库的函数进行单元测试:

以下功能将进行单元测试:

def getPage(url):
    r = requests.get(url)
    r.raise_for_status()    # raises HTTPError if necessary
    dom = fromstring(r.text)
    dom.make_links_absolute(url)
    return dom
Run Code Online (Sandbox Code Playgroud)

我的单元测试目前如下.(虽然显然这不起作用.)

@patch('requests.Response')
@patch('requests.Response.raise_for_status', return_value=None)
@patch('requests.get', return_value=requests.Response)
def test_getPage(mock_requests_get, mock_RFS, mock_response):
    with open("domtest.htm", "r") as testfile:
        mock_response.text = testfile.read()    

    dom = getPage('http://www.test.com')
    eq_(dom, dom_test)
Run Code Online (Sandbox Code Playgroud)

结果回溯是:

Traceback (most recent call last):
  File "C:\Anaconda\lib\site-packages\nose\case.py", line 197, in runTest
    self.test(*self.arg)
  File "C:\Anaconda\lib\site-packages\mock.py", line 1201, in patched
    return func(*args, **keywargs)
  File "C:\...\test_myfile.py", line 79, in test_getPage
    dom = getPage('http://www.test.com')
  File "C:\...\myfile.py", line 67, …
Run Code Online (Sandbox Code Playgroud)

python unit-testing mocking python-2.7

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

高效的免费/开源SOCP(二阶锥编程)求解器

我正在寻找有关评估速度的二阶锥规划求解器的推荐(或比较)。求解器必须免费供非营利使用或开源。

我对环境相当开放:独立的解决方案,库,Matlab,Python,R等都是可以接受的。

我的问题在约束方面有很大的稀疏性,我相信好的求解者可以利用这些约束来加快计算速度。

convex-optimization

5
推荐指数
2
解决办法
3161
查看次数

嵌入式编程中的zalloc是什么?

我正在研究编程ESP8266串行wifi芯片.在其SDK示例中,它广泛使用了os_zalloc我期望的函数malloc.

偶尔也os_malloc可以使用.所以它们在功能上似乎没有相同之处.

不幸的是没有文件.任何人都可以从以下头文件中做出有根据的猜测吗?

#ifndef __MEM_H__
#define __MEM_H__

//void *pvPortMalloc( size_t xWantedSize );
//void vPortFree( void *pv );
//void *pvPortZalloc(size_t size);

#define os_malloc   pvPortMalloc
#define os_free     vPortFree
#define os_zalloc   pvPortZalloc

#endif
Run Code Online (Sandbox Code Playgroud)

c embedded esp8266

5
推荐指数
2
解决办法
8087
查看次数

cython:ndarray字符串的内存视图(或直接ndarray索引)

如何指定包含字符串的ndarray的内存视图?

char[:],, char*[:]...不行.

为了说明,我的问题是函数的定义abc(...):

cdef void abc(char[:] in_buffer):
    cdef char * element
    element = address(in_buffer[1])
    ...

def main():
    cdef Py_ssize_t i, n = 100

    a = np.array(['ABC', 'D', 'EFGHI'])
    for i in range(n):
        abc(a)
Run Code Online (Sandbox Code Playgroud)

如果无法访问内存视图,我可以自己实现直接阵列访问吗?我需要避免GIL的功能abc(...).


编辑1:回应Bi Rico的回答.

我的目标是为函数释放GIL,abc(...)并在其中处理ndarray in_buffer带有c字符串函数的字符串元素.即,如下所示:

cdef void abc(char[:, ::1] in_buffer) nogil:
    cdef int max_elt_length = in_buffer.shape[1]+1
    cdef char element[max_elt_length+1]
    cdef int length

    for i in range(in_buffer.shape[0]+1):  # is this equivalent to in_buffer.dtype.itemsize + 1 ? …
Run Code Online (Sandbox Code Playgroud)

python numpy cython

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

Grako"代码"代

我试图理解如何重新创建由grako生成的解析器解析的文档.

在深入了解grako源代码后,我相信我终于明白了如何从AST返回到生成的文档.有人可以检查我的以下理解是否正确,如果有更直接的方法,请告诉我?

  1. 一个人创建了一个希望解析的PEG语法.Grako基于它创建了一个解析器类和一个sematics类.
  2. 一个(手动)创建一个python模块,其中包含(或多或少)一个grako.model.Node语法中每个规则的单独类(子类).每个类必须至少有一个构造函数,其中包含相应规则中每个命名元素的参数,并将其值存储在类属性中.
  3. 一个子类(手动)生成的语义类,用步骤2中创建的相应类替换每个规则的ast.
  4. 一个人(手工)创建一个python模块,这个子类grako.codegen.ModelRenderer定义了"代码"生成模板,用于(或多或少)一个语法中的每个规则.
  5. 一个提供由Node子类组成的AST和包含模板的python模块grako.codegen.CodeGenerator().render(...)来创建输出.

这可能是对的吗?这看起来根本不直观.

  • 为什么要经过第2步和第3步的重大努力,除了存储已包含在AST中的信息之外什么都不做?
  • 这种方法的优点是什么,而不是直接从AST工作?
  • 如果只想重新创建原始语法中的文档,是否有办法自动化或回避步骤2和3?
  • 给定PEG语法定义,理论上可以自动创建"代码生成器生成器",就像创建"解析器生成器"一样吗?

python code-generation grako

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

python中的测地线缓冲

鉴于陆地多边形为Shapely MultiPolygon,我想找到代表海岸线周围12海里缓冲区的(多)多边形.

使用Shapely buffer方法不起作用,因为它使用欧几里德计算.

有人能告诉我如何计算python中的测地缓冲区吗?

python gis shapely cartopy

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

_byteswap_uint64 和 _byteswap_ulong 的跨平台定义

Visual Studio的定义_byteswap_uint64_byteswap_ulongstdlib.h

我是否正确地假设,这不是标准的并且不会在 Linux 或 Darwin 上编译?

有没有办法以跨平台的方式定义这些包含?

cross-platform include endianness htonl

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

Windows 上的 Git 符号链接不触发 UAC 提示

Windows 版 Git 现在显然实现了对 NTFS 文件系统上符号链接的支持。(请参阅此 git wiki 页面。

在 Windows 上,默认情况下创建符号链接是管理员权限。维基页面解释了如何向普通用户授予必要的权限。(标题下:“允许非管理员创建符号链接”)

我的问题是,即使遵循此操作,git 也不会创建符号链接,但会失败:

error: unable to create symlink somefile.h: Permission denied

wiki 页面提到需要 UAC 提升,但 UAC 提示永远不会触发。

有人让它发挥作用吗?

windows git symlink

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