我有一个 python 对象,我知道这是加载到该对象的镶木地板文件。(我无法实际从文件中读取它)。
该对象var_1包含b'PAR1\x15\x....1\x00PAR1
当我检查类型时:
type(var_1)
Run Code Online (Sandbox Code Playgroud)
我得到的结果是bytes.
有办法阅读这个吗?说成熊猫数据框?
我尝试过: 1)
from fastparquet import ParquetFile
pf = ParquetFile(var_1)
Run Code Online (Sandbox Code Playgroud)
并得到:
TypeError: a bytes-like object is required, not 'str'
Run Code Online (Sandbox Code Playgroud)
2
import pyarrow.parquet as pq
dataset = pq.ParquetDataset(var_1)
Run Code Online (Sandbox Code Playgroud)
并得到:
TypeError: not a path-like object
Run Code Online (Sandbox Code Playgroud)
注意, How to read a Parquet file into Pandas DataFrame?的解决方案 。即pd.read_parquet(var_1, engine='fastparquet')导致TypeError: a bytes-like object is required, not 'str'
有没有办法在 python 中重新启动 CUDA GPU?或者释放它以便另一个脚本可以访问它?
\n\n我有时会在 python 中使用 GPU 时遇到错误,再次访问 GPU 的唯一解决方案是重新启动我的 Jupyter 笔记本。
\n\nPS:我使用 GPU 来使用 pytorch 进行一些计算。
\n\n我得到的具体错误是:
\n\nRuntimeError: CUDA error: device-side assert triggered\nRun Code Online (Sandbox Code Playgroud)\n\n我见过https://towardsdatascience.com/cuda-error-device-side-assert-triggered-c6ae1c8fa4c3和许多其他人讨论这个问题。我的主要问题是如何在不重新启动 Jupyter 内核的情况下继续使用 GPU 会话。
\n\n即我想捕获这个错误,我用 try/ except 执行此错误并继续,因为我正在一个接一个地训练多个模型,所以我无法重新启动来解决我的问题。
\n\n编辑重新启动内核似乎是公认的天真的解决方案,请参阅:
\n\n- https://forums.fast.ai/t/how-to-free-up-gpu-memory-in-pytorch-0-2-x/9256/2 \n- https://towardsdatascience.com/cuda -error-device-side-assert-triggered-c6ae1c8fa4c3,其中她提到“在 Kaggle 上工作?Here\xe2\x80\x99s 为什么即使按照上述步骤操作,你仍然在挣扎”
\n我有成对的4个列表a和b与整数值,如list_1a = [1,2,3,...]和list_1b = [8,11,15,...].我们的想法是,整数值list_1a现在由整数值表示list_1b,并且相同list_2a,list_2b等等.
现在我有一个final_list包含4个列的列表,其中包含与a列表对应的整数值.我想将值映射final_list到b列表中的值.在python中最快的方法是什么?
有没有比使用列表更快的方法?
编辑:
要澄清问题,请采用以下示例:
list_1a = [1,2,3]
list_1b = [8,11,15]
list_2a = [5,6,7,8]
list_2b = [22,26,30,34]
list_3a = [11,12,13,14,18]
list_3b = [18,12,25,28,30]
list_4a = [51,61,72,82]
list_4b = [73,76,72,94]
Run Code Online (Sandbox Code Playgroud)
list_1a + list_1b永远不会有重复的整数值.final_listfinal_list_b映射发生后应该看起来像
final_list_a = [[1,6,11,51],[3,6,14,72]]
final_list_b = [[8,26,18,73],[15,26,28,72]]
Run Code Online (Sandbox Code Playgroud)
为了正确看待问题,这个问题适用于数据库应用程序,其中这些"列表"包含自动生成的键值
假设您要为docker镜像安装以下软件包列表
("jsonlite","dplyr","stringr","tidyr","lubridate",
"knitr","purrr","tm","cba","caret",
"plumber","httr")
Run Code Online (Sandbox Code Playgroud)
安装这些实际上需要大约1个小时!
有关如何加速这样的事情的任何建议?(或者如何防止在每次新图像构建时重新安装?)
边注
我不会像这样从dockerfile安装这些软件包:
RUN Rscript -e "install.packages('stringr')
...
Run Code Online (Sandbox Code Playgroud)
相反,我创建了一个R脚本Requirements.R来安装这些包,并简单地执行:
RUN Rscript Requirements.R
Run Code Online (Sandbox Code Playgroud)
这些不是直接从Dockerfile安装软件包的最佳选择吗?
我无法将CSV文件中的数据读入内存,因为它太大了,即pandas.read_csv使用pandas无法正常工作.
我只想根据应该适合内存的一些列值来获取数据.使用df可能假设包含CSV中的完整数据的pandas数据帧 ,我会这样做
df.loc[(df['column_name'] == 1)
Run Code Online (Sandbox Code Playgroud)
CSV文件确实包含一个标题,它是有序的,所以我真的不需要使用,column_name但如果必须的话,该列的顺序.
我怎样才能做到这一点?我读了一些关于pyspark的内容,但我不知道这是否有用