小编Fed*_*bas的帖子

如何直接在numpy数据类型中为16位无符号整数指定endiannes?

我认为这是一个简单的问题,但到目前为止我还没有找到答案.

我使用相当大(~2 GB)的二进制数据图像.我用线将它们加载到python中

data = np.memmap(filename, dtype=np.dtype('uint16'), mode='r').byteswap()
Run Code Online (Sandbox Code Playgroud)

对于大文件,这可能需要几秒钟.无论如何,我注意到同一行但没有byteswapping只需要一瞬间.

所以问题是:有没有办法直接在数据类型中指定字节顺序,所以我之后不需要做byteswap?根据http://docs.scipy.org/doc/numpy/reference/arrays.dtypes.html,

数据类型对象(...)描述数据的以下方面:(...)3.数据的字节顺序(little-endian或big-endian)(...)

如何为16位无符号整数执行此操作?这样的事情np.dtype('>uint16')对我没用,他们给我一个TypeError: data type ">uint16" not understood错误.

谢谢!

python numpy

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

numpy:如何一次填充结构化数组中的多个字段

非常简单的问题:我有一个带有多个列的结构化数组,我只想用其他预先存在的数组填充其中一些(但不止一个).

这就是我正在尝试的:

strc = np.zeros(4, dtype=[('x', int), ('y', int), ('z', int)])
x = np.array([2, 3])
strc[['x', 'y']][0] = x
Run Code Online (Sandbox Code Playgroud)

这给了我这个未来的警告:

main:1:FutureWarning:Numpy检测到您(可能)正在写入numpy.diagonal返回的数组或者选择记录数组中的多个字段.这段代码可能会在未来的numpy版本中破解 - 有关详细信息,请参阅numpy.diagonal或arrays.indexing参考文档.快速解决方法是制作一个明确的副本(例如,执行arr.diagonal().copy()或arr [['f0','f1']].copy()).

但即使这是一个警告,结构化数组也不会被填充.到目前为止,我正在迭代两个数组并且它可以工作,但我猜这是非常低效的.有没有更好的办法?

python numpy structured-array

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

如何在pyqtgraph中的HistogramLUTItem中设置对数刻度和轴限制

我正在使用 pyqtgraph 来实时查看相机采集程序。大多数时候,我的图像由大量背景噪声和仅具有较高强度的几个像素的信号组成。因此,与HistogramLUTItem实际信号对应的部分看起来像一条细线,旁边的噪声很大。能够绘制数据的对数会使数据更加站得住脚。

这可能吗?

我目前正在以这种方式创建直方图:

    imagewidget = pg.GraphicsLayoutWidget()
    self.p1 = imagewidget.addPlot()
    self.img = pg.ImageItem()
    self.p1.addItem(self.img)
    self.p1.getViewBox().setAspectLocked(True)
    self.hist = pg.HistogramLUTItem()
    self.hist.setImageItem(self.img)
    self.hist.autoHistogramRange = False
    imagewidget.addItem(self.hist)
Run Code Online (Sandbox Code Playgroud)

这样self.hist.axis.setLogMode(True)做不起作用,因为它影响了直方图的 x 轴而不是 y 轴。

最后,我还希望能够限制直方图 x 轴的可访问范围。如何才能做到这一点?

干杯!

pyqtgraph

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

标签 统计

numpy ×2

python ×2

pyqtgraph ×1

structured-array ×1