我在 Windows 10 上使用带有 Python3 的 jupyter notebook。我的电脑有 8GB 内存,至少有 4GB 的内存是免费的。
但是当我想用这个命令制作一个大小为 6000*6000 的 numpy ndArray 时:
np.zeros((6000, 6000), dtype='float64')
我得到了这个:Unable to allocate array with shape (6000, 6000) and data type float64
我认为这不会使用超过 100MB 的 RAM。我试图改变号码看看会发生什么。我可以制作的最大数组是 (5000,5000)。我在估计需要多少 RAM 时出错了吗?
我终于在我的代码中发现了一个性能瓶颈,但对于原因是什么感到困惑.为了解决这个问题,我改变了所有的调用numpy.zeros_like来代替使用numpy.zeros.但为什么zeros_likesooooo慢得多?
例如(注意e-05在zeros电话):
>>> timeit.timeit('np.zeros((12488, 7588, 3), np.uint8)', 'import numpy as np', number = 10)
5.2928924560546875e-05
>>> timeit.timeit('np.zeros_like(x)', 'import numpy as np; x = np.zeros((12488, 7588, 3), np.uint8)', number = 10)
1.4402990341186523
Run Code Online (Sandbox Code Playgroud)
但奇怪的是,写入创建的数组zeros明显比使用以下创建的数组慢zeros_like:
>>> timeit.timeit('x[100:-100, 100:-100] = 1', 'import numpy as np; x = np.zeros((12488, 7588, 3), np.uint8)', number = 10)
0.4310588836669922
>>> timeit.timeit('x[100:-100, 100:-100] = 1', 'import numpy as np; x = np.zeros_like(np.zeros((12488, 7588, 3), np.uint8))', …Run Code Online (Sandbox Code Playgroud) 我对Python编码比较陌生,想了解Python中的统计信息和数据管理。为此,我想安装Matplotlib,这给了我一些问题。
我看到其他人有此问题,但是我还没有完全了解如何解决它。
要安装我使用
pip install matplotlib
Run Code Online (Sandbox Code Playgroud)
我安装了以下规格
我遇到的第一个错误是安装Microsoft Studio,所以我做到了。我也尝试更新点子
BUILDING MATPLOTLIB
matplotlib: yes [3.1.1]
python: yes [3.8.0 (tags/v3.8.0:fa919fd, Oct 14 2019, 19:21:23) [MSC v.1916 32 bit (Intel)]]
platform: yes [win32]
...
checkdep_freetype2.c
src/checkdep_freetype2.c(1): fatal error C1083: Cannot open include file: 'ft2build.h': No such file or directory
error: command 'C:\\Program Files (x86)\\Microsoft Visual Studio\\2019\\BuildTools\\VC\\Tools\\MSVC\\14.23.28105\\bin\\HostX86\\x86\\cl.exe' failed with exit status 2
----------------------------------------
ERROR: Command errored out with exit status 1:
Run Code Online (Sandbox Code Playgroud) 来自内核文档的过度提交文章提到过度提交模式0基于启发式提交处理.它没有概述所涉及的启发式.
有人可以阐明实际的启发式是什么吗?任何与内核源相关的链接也都有效!
我知道之前已经问过与内存错误相关的问题,例如这里、这里、这里、这里或这里。并且建议的解决方案始终是切换到 Python 3 和/或 Window 64 位,或者在代码错误的情况下修复代码。但是,我已经在使用 Python 3 和 Win 64。我还可以从 Windows 任务管理器中看到,当 Python 抛出内存错误时,我的 64GB 内存中有几 GB 仍然可用。
我有大约 15 个日期索引的 Pandas 数据帧,每个数据帧有 14000 行,平均有 5000 列浮点数据,以及大约 40-50% 的 NaN 值,我从硬盘驱动器读入。我不能简单地删除 NaN,因为不同的列在不同的日期有 NaN。当我尝试将它们与pd.concat(). 所以这不是一些错误的代码或while循环的问题。如果我将某些数据框排除在串联之外,则串联时不会发生内存错误,但是当我尝试对串联数据进行 Scikit 学习决策树分析时,就会发生这种情况。
我的问题是如何让 Python 使用所有可用内存而不抛出内存错误?
我正在尝试将形状 (1482535, 67826) 的 scipy.sparse.csr.csr_matrix 存储到数据框中,但出现如下错误。我在具有 4CPU 和 208 GB 内存的 Google Cloud Platform 上运行。我不能再增加我的记忆了。我该如何解决这个问题?任何建议表示赞赏。
type(x_train_bow_name)`
scipy.sparse.csr.csr_matrix
data1 = pd.DataFrame(x_train_bow_name.toarray())`
-----------------------------------------------------------------
----------
MemoryError Traceback (most recent
call
last)
<ipython-input-16-283fa4dd2dd6> in <module>
----> 1 data1 = pd.DataFrame(x_train_bow_name.toarray())
/usr/local/lib/python3.5/dist-
packages/scipy/sparse/compressed.py in toarray(self, order, out)
1022 if out is None and order is None:
1023 order = self._swap('cf')[0]
-> 1024 out = self._process_toarray_args(order, out)
1025 if not (out.flags.c_contiguous or
out.flags.f_contiguous):
1026 raise ValueError('Output array must be C or
F contiguous')
/usr/local/lib/python3.5/dist-packages/scipy/sparse/base.py in
_process_toarray_args(self, …Run Code Online (Sandbox Code Playgroud) 什么ravi文件是:
RAVI文件是由热成像软件(例如Micro-Epsilon TIM Connect或Optris PIX Connect)创建的视频文件。它包含由热像仪捕获的视频,并以类似于音频视频交错(.AVI)格式的格式保存。RAVI文件还存储辐射度信息,例如由热像仪收集的温度和测量区域信息。
我的问题:
我必须处理ravi文件中的数据。我需要像素的温度值(或者帧的最高温度足以满足我的需要)。我想检查特定框架上的最高温度。最终结果将是一个报告,其中包含框架上的最高温度值(这将是图形)。使用Micro-Epsilon TIM Connect或Optris PIX Connect工具很容易检查和处理,但是我无法使用它们(我必须编写自己的工具)。
我的问题:
ravi文件中获取数据(实际上我只需要温度值)?ravi文件转换为另一个文件(如果我可以从ravi文件中获取数据,这无关紧要)?注意:
ravi文件,但无法记录新文件或修改记录。SDK此类相机的站点,但对我来说不清楚ravi是否可以从文件中获取数据。链接到libirimager2文档:libirimager2ravi使用媒体播放器播放文件,则说明使用的编解码器为:(Uncompressed packed YUV 4:2:2您可以在下面看到获取流)如果我OpenCV用媒体播放器解析它或在其中播放,则可以看到一些信息流。但是我不确定如何获得温度...
CV2代码:
import cv2
cap = cv2.VideoCapture("my_test.ravi")
if not cap.isOpened():
print("Error opening video stream or file")
while cap.isOpened():
ret, frame = cap.read()
if ret:
cv2.imshow('Frame', frame)
if cv2.waitKey(25) …Run Code Online (Sandbox Code Playgroud) 我在 Windows 上。我有一个包含约 8700 万行(10-12 列)的 CSV。我正在使用 Jupyter 笔记本,并且可以使用 Pandas 成功读取它。我还有另一个大约 100K 行的 csv,可以读取它。当我尝试(左外)加入这两个时会出现问题。我总是最终得到一个错误
MemoryError: Unable to allocate __ GiB for array with shape (__,__) and data type ___.
Run Code Online (Sandbox Code Playgroud)
我尝试删除不必要的列并将 Pandas 数据帧转换为重新排列并以这种方式加入它们 - 没有奏效。我还尝试尽可能小地更改这些 recarray 中列的数据类型 - 也没有帮助。错误中的 __ GiB 也发生了变化——我见过 1.5、3、12……我有 18.4 GB 的“所有驱动器的总页面文件大小”并且无法更改此设置。我还有 77.3 GB 可用的本地存储空间,所以我认为这不是问题所在。
我看到了另一个答案,他们更改了过量使用内存,但它是针对 Linux 的。这是 Windows 上的可能解决方案吗?这似乎与 Jupyter 或我的机器有关吗?任何帮助将非常感激。