- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我正在努力思考 PEP3118 的 numpy 实现。缓冲区访问在 numpy 中究竟是如何工作的。
>>> p = numpy.getbuffer(numpy.arange(10))
>>> p
<read-write buffer for 0x1003e5b10, size -1, offset 0 at 0x1016ab4b0>
>>> numpy.frombuffer(p)
array([ 0.00000000e+000, 4.94065646e-324, 9.88131292e-324,
1.48219694e-323, 1.97626258e-323, 2.47032823e-323,
2.96439388e-323, 3.45845952e-323, 3.95252517e-323,
4.44659081e-323])
所以我得到了意想不到的返回。我希望看到一个包含 0-9 中的 10 个元素的数组。不过,我可以进入数组并进行读/写。
>>> j = numpy.frombuffer(p)
>>> j
array([ 0.00000000e+000, 4.94065646e-324, 9.88131292e-324,
1.48219694e-323, 1.97626258e-323, 2.47032823e-323,
2.96439388e-323, 3.45845952e-323, 3.95252517e-323,
4.44659081e-323])
>>> j += 1
>>> j
array([ 1., 1., 1., 1., 1., 1., 1., 1., 1., 1.])
所以看起来缓冲区正在初始化为全零,然后我可以写入。我期望的功能是能够使用 getbuffer 将数组(使用 arange 或 asarray)直接构建到缓冲区。这不可能吗?
最佳答案
你有一个简单的 dtype
问题。您创建的缓冲区
np.getbuffer(np.arange(10))
有一个dtype=int
,因为np.arange
默认使用dtype=int
。
然后,当您尝试读取您的缓冲区时
np.frombuffer(p)
您实际上使用的是 np.frombuffer
的 dtype=float
默认值。相反,使用
np.frombuffer(p, dtype=int)
等等,你得到了
array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
关于python - numpy.getbuffer 和 numpy.frombuffer,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12462547/
我想从 Python 3 中的 numpy 数组中获取缓冲区。我找到了以下代码: $ python3 Python 3.2.3 (default, Sep 25 2013, 18:25:56) [GC
为什么我收到这些代码的错误消息: TransformerFactory tf = TransformerFactory.newInstance(); Transformer t = tf.newTra
有人知道为什么 IMemAllocator:GetBuffer 的任何原因吗? (Directshow) 挂起,除了所有正在使用的样本? 我有一个使用 GMFBridge by Geraint Dav
我正在尝试理解 GetBuffer() 函数。看起来它会返回指向 CString 的指针,这在 msdn GetBuffer() 中得到了确认。 .但是,我不明白 msdn GetBuffer() 中
我知道 GetBuffer()在 C#/.NET 中的 MemoryStream 上必须小心使用,因为正如文档所描述的 here ,最后可能有未使用的字节,因此您必须确保只查看缓冲区中的第一个 Mem
在我的自定义输出引脚中,我调用 IMemAllocator->GetBuffer 来获取新样本并将数据复制到其中: HRESULT MCMyOutputPin::Deliver(IMediaSampl
我已经开始使用 C# 和 .NET Core,我正尝试在 https://stackoverflow.com/a/23739932/1459684 的答案中实现代码 但是,我的线条有问题writer.
也许我快疯了,但我已经尝试了所有我能想到的搜索组合,但我找不到不带参数的 CString::GetBuffer() 的定义。我查找的每个引用资料都描述了 CString::GetBuffer( int
下面的代码总是会抛出UnnuthorizedAccessException(无法访问MemoryStream的内部缓冲区。) byte[] buf1 = { 2, 3, 5, 7, 11 }; var
我正在努力思考 PEP3118 的 numpy 实现。缓冲区访问在 numpy 中究竟是如何工作的。 >>> p = numpy.getbuffer(numpy.arange(10)) >>> p
来自 CString to char* , ReleaseBuffer() 必须在 GetBuffer() 之后使用。但为什么?如果我在 GetBuffer() 之后不使用 ReleaseBuffer
本文整理了Java中com.jme3.scene.debug.WireBox.getBuffer()方法的一些代码示例,展示了WireBox.getBuffer()的具体用法。这些代码示例主要来源于G
许多 Windows API,例如 GetModuleFileName 等...将输出写入 char* 缓冲区。但是用std::string更方便。有没有办法让它们直接写入 std::string(或
我目前正在研究 MFC 库,我想知道为什么我应该使用 GetBuffer 成员,它返回指向 CString 对象缓冲区的指针,而不是其他允许读取和更改该对象中的字符的成员函数?例如我为什么要这样做(代
根据BytesIO docs : getbuffer() Return a readable and writable view over the contents of the buffer wit
我正在尝试创建一个多线程程序,其中所有渲染都在主线程上完成,而消息处理(和窗口创建)在辅助线程上完成。初始化函数中的下面一行代码SwapChain->GetBuffer(0, __uuidof(ID3
我正在 DirectX11 中创建一个设备和交换链,然后尝试获取后台缓冲区的纹理。创建步骤似乎有效,但无论我做什么,GetBuffer 调用总是失败并出现错误 DXGI_ERROR_INVALID_C
在 Python 3 中,我可以通过 object.getbuffer().nbytes(其中 object = ByteIO())获取 ByteIO 对象的大小,但是什么会是 Python 2 中
我正在 WP8 上开发一个使用原生音频的应用程序。我使用 wasapi 来捕获和呈现客户端。我初始化了默认设备并运行 GetService 方法来获取 IAudioCaptureClient。然后,我
我有一个处理大量 RESTful 请求的 IIS7 应用程序池。当事情变热时,CPU 使用率达到 100%,请求需要很长时间才能处理。 在使用 ANTS 进行分析时,我们发现大部分 CPU 时间通常都
我是一名优秀的程序员,十分优秀!