小编dtl*_*ier的帖子

matplotlib - 从轮廓线中提取数据

我想从均匀间隔的2D数据(类似图像的数据)的单个轮廓获取数据.

基于类似问题中的示例:如何获得由等高线图(matplotlib)绘制的线的(x,y)值?

>>> import matplotlib.pyplot as plt
>>> x = [1,2,3,4]
>>> y = [1,2,3,4]
>>> m = [[15,14,13,12],[14,12,10,8],[13,10,7,4],[12,8,4,0]]
>>> cs = plt.contour(x,y,m, [9.5])
>>> cs.collections[0].get_paths()
Run Code Online (Sandbox Code Playgroud)

这次调用的结果cs.collections[0].get_paths()是:

[Path([[ 4.          1.625     ]
 [ 3.25        2.        ]
 [ 3.          2.16666667]
 [ 2.16666667  3.        ]
 [ 2.          3.25      ]
 [ 1.625       4.        ]], None)]
Run Code Online (Sandbox Code Playgroud)

基于这些图,这个结果是有意义的,并且似乎是轮廓线的(y,x)对的集合.

除了手动循环这个返回值,提取坐标和组合线的数组,是否有更好的方法从matplotlib.path对象获取数据?从数据中提取数据时是否存在需要注意的陷阱matplotlib.path

或者,有没有替代品matplotlib或更好numpy/ scipy做类似的事情?理想的是获得描述该线的(x,y)对的高分辨率矢量,可用于进一步分析,因为通常我的数据集不像上面的例子那么小或简单.

python numpy matplotlib contour scipy

49
推荐指数
3
解决办法
3万
查看次数

将数据从ctypes数组转换为numpy

我正在使用Python(via ctypes)包装的C库来运行一系列计算.在运行的不同阶段,我想将数据导入Python,特别是numpy数组.

我正在使用的包装为数组数据做了两种不同类型的返回(我特别感兴趣):

  • ctypes数组:当我这样做时type(x)(其中x是ctypes数组,我得到了一个<class 'module_name.wrapper_class_name.c_double_Array_12000'>回报.我知道这些数据是文档中内部数据的副本,我可以numpy轻松地将它变成一个数组:

    >>> np.ctypeslib.as_array(x)
    
    Run Code Online (Sandbox Code Playgroud)

这将返回numpy数据的一维数组.

  • ctype指向数据的指针:在这种情况下,从库的文档中,我知道我得到一个指向存储的数据并直接用于库.乳清我做type(y)(y是指针)我得到了<class 'module_name.wrapper_class_name.LP_c_double'>.在这种情况下,我仍然可以索引数据y[0][2],但我只能通过一个超级尴尬的方式将它变成numpy:

    >>> np.frombuffer(np.core.multiarray.int_asbuffer(
        ctypes.addressof(y.contents), array_length*np.dtype(float).itemsize))
    
    Run Code Online (Sandbox Code Playgroud)

我在Travis Oliphant的旧numpy邮件列表帖子中找到了这个,但在numpy文档中没有.如果不是这种方法,我尝试如上,我得到以下内容:

>>> np.ctypeslib.as_array(y)
...
...  BUNCH OF STACK INFORMATION
...
AttributeError: 'LP_c_double' object has no attribute '__array_interface__'
Run Code Online (Sandbox Code Playgroud)

这种np.frombuffer方法是最佳还是唯一的方法?我对其他建议numpy持开放态度,但我仍然希望使用,因为我有很多其他后处理代码,它依赖于numpy我想要对这些数据使用的功能.

python ctypes numpy

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

术语:Python和Numpy - "iterable"与"array_like"

Python程序中的一个iterable和一个array_like对象有什么区别Numpy

双方iterablearray_like经常看到的Python文档和他们分享一些相似的性质.

我知道在这种情况下,array_like对象应该支持Numpy类型操作,如广播,但是Numpy数组区域也是可迭代的.说这array_like是一个扩展(或超集?)是正确的iterable吗?

python numpy

21
推荐指数
2
解决办法
4329
查看次数

HDF5文件和PyTables文件之间的区别

HDF5创建的文件和文件之间是否有区别PyTables

PyTables有两个功能,.isHDFfile().isPyTablesFile()建议两种格式之间存在差异.

我已经在谷歌上做了一些调查,并且已经认识到PyTables是建立在HDF之上的,但我无法找到更多.

我对互操作性,速度和开销特别感兴趣.

谢谢.

python numpy hdf5 pytables

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

标签 统计

numpy ×4

python ×4

contour ×1

ctypes ×1

hdf5 ×1

matplotlib ×1

pytables ×1

scipy ×1