小编Wal*_*l-E的帖子

Matplotlib 在 imshow 上绘图,同时保持轴大小

每当我用来imshow()绘制图像时,在成对的底部 x 轴上绘制一维数据会更改使用 for 创建的初始 x 轴的大小和纵横比imshow()。我该如何避免这种行为?以下是重现该问题的方法:

import numpy as np
import matplotlib
matplotlib.use('macosx')
import matplotlib.pyplot as plt

im = np.random.rand(2856, 4290)
light_curve = im[1000, :]

fig = plt.figure(1, figsize=(10,10))
ax1 = plt.subplot(2,1,1)
ax1.imshow(im, cmap='gray', origin='lower')
ax2 = plt.subplot(2,1,2)
ax2.imshow(im, cmap='gray', origin='lower')
# Setting aspect ratio to equal does not help
ax2.set_aspect('equal')

ax21 = ax2.twinx()
ax21.plot(light_curve, alpha=0.7)
# Setting axis limits does not help
ax1.axis([0, im.shape[1], 0, im.shape[0]])
ax21.set_xlim([0, im.shape[1]])
Run Code Online (Sandbox Code Playgroud)

这是我的图形后端的样子(macosx如果有任何相关的话)

顶部:使用 imshow() 的图像。 底部:绘图重叠,图像轴长宽比和大小已更改

上面使用的目的不就是twinx()首先帮助解决这个问题吗?那么,我如何保持初始 …

plot axis overlay matplotlib imshow

5
推荐指数
1
解决办法
2298
查看次数

pandas 数据帧从 parquet 读取的速度比从 pickle 文件读取的速度慢

根据https://towardsdatascience.com/the-best-format-to-save-pandas-data-414dca023e0d的基准测试 ,该基准使用分类列作为字符串,数字列作为浮点数,从 Pandas 数据帧加载时读取速度应该更快。 parquet 文件比 pickle 文件。

我碰巧在以下用例中始终看到相反的情况,其中我只有 1 列具有固定数量字符的字符串,其中所有字符都可以从一行到下一行变化,以下是这些字符串的示例:

./2010/10/12/2010-10-12T02:38:47.09Z_blah0.fixedword1.fixedword2

其中除“fixedword1”和“fixedword2”之外的所有字符都从一行更改为下一行(这些不同的字符是从 2010 年到 2018 年的日期和时间,增量约为 1 秒(增量不是恒定的)。

我在这个数据框中有大约1.3 亿行

数据框由包含以下字符串的 csv 文件构造而成:

df = pd.read_csv(flist, names=['path_str'], dtype=object)
Run Code Online (Sandbox Code Playgroud)

并保存到 pickle 和 parquet 文件中:

parquet_f = os.path.join(parent_dir, 'df.parquet')
df.to_parquet(parquet_f, engine='pyarrow', compression=None)

pickle_f = os.path.join(parent_dir, 'df.pkl')
df.to_pickle(pickle_f)
Run Code Online (Sandbox Code Playgroud)

为什么我总是得到相反的结果,读取文件的速度比读取 1.3 亿行这些字符串的文件pickle快大约 3 倍?parquet我通过设置相同的行数尝试了上面链接的基准测试,并且parquet仍然始终更快。

pickle dataframe pandas parquet

5
推荐指数
0
解决办法
9795
查看次数

ubuntu 20.04 命令行中 Nano 编辑器出现分段错误

我有 Ubuntu 20.04。我的命令行文本编辑器(例如nano或 )pico无法再以用户身份在命令行中运行,我得到

user@hostname:~$ nano 
Segmentation fault (core dumped)
Run Code Online (Sandbox Code Playgroud)

sudo nano但是,当我使用 sudo等执行此操作时,事情会起作用sudo pico...我没有这个问题vi

自从上次工作以来,我从 Ubuntu 进行了例行更新,并安装了几个带有conda. 我还编辑了使用 CUDA 工具包运行的张量流的 LD_LIBRARY_PATH:

echo $LD_LIBRARY_PATH

/usr/local/cuda-11.5/lib64:/usr/local/cuda/extras/CUPTI/lib64:/home/rattie/miniconda3/lib/

[更新] 看起来这个为张量流编辑的 LD_LIBRARY_PATH 是罪魁祸首。我在 conda 基本环境中编辑它,而不是隔离为使用张量流创建的虚拟环境中的更改(例如通过$CONDA_PREFIX/etc/conda/activate.d/env_vars.sh)特别是,删除/home/rattie/miniconda3/lib/修复了问题,尽管我不明白为什么它导致我的命令(例如 nano)需要 sudo 权限。

linux sudo segmentation-fault tensorflow ubuntu-20.04

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