小编New*_*eAF的帖子

导入 Torch 库后,在绘制图形时内核不断死亡

我正在尝试运行以下代码:

import matplotlib.pyplot as plt
%matplotlib inline
import torch

x = y = torch.tensor([1,2,3]).numpy()
plt.plot(x,y);
Run Code Online (Sandbox Code Playgroud)

我不断收到消息:The kernel appears to have died. It will restart automatically.工具栏上有一个重新启动和一个红色的“死内核”标签。

但奇怪的是,如果我先导入matplotlib.pyplot并绘制一些随机图,上面的代码绘制得很好。换句话说,以下代码工作正常。

import matplotlib.pyplot as plt
%matplotlib inline

plt.subplots(figsize=(0.01,0.01))
plt.gca().set_visible(False);

import torch
x = torch.tensor([1,2,3]).numpy()

plt.plot(x,x);
Run Code Online (Sandbox Code Playgroud)

这里发生了什么?如果重要的话,我在 Python 3.7.7 上使用 numpy 1.18.5、pytorch 1.6.0、matplotlib 3.2.2。谢谢你。

python matplotlib jupyter-notebook pytorch

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

将 Pandas 系列列表转换为 numpy 数组

我想将一个熊猫系列的数字列表字符串转换为一个 numpy 数组。我所拥有的是这样的:

ds = pd.Series(['[1 -2 0 1.2 4.34]', '[3.3 4 0 -1 9.1]'])
Run Code Online (Sandbox Code Playgroud)

我想要的输出:

arr = np.array([[1, -2, 0, 1.2, 4.34], [3.3, 4, 0, -1, 9.1]])
Run Code Online (Sandbox Code Playgroud)

到目前为止,我所做的是将熊猫系列转换为一系列数字列表:

ds1 = ds.apply(lambda x: [float(number) for number in x.strip('[]').split(' ')])
Run Code Online (Sandbox Code Playgroud)

但我不知道如何从ds1arr

python numpy pandas

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

通过键合并两个 Python 字典的值

我想通过它们的键合并两个字典的值。例子:

d1 = {'a':1, 'b':2, 'c':3}
d2 = {'a':2, 'b':[2,3], 'd':3}
Run Code Online (Sandbox Code Playgroud)

所需的输出:

{'a': [1, 2], 'b': [2, 2, 3], 'c': [3], 'd': [3]}
Run Code Online (Sandbox Code Playgroud)

到目前为止我所拥有的是

d12 = {}
for d in (d1, d2):
    for k,v in d.items(): 
        d12.setdefault(k, []).append(v)
Run Code Online (Sandbox Code Playgroud)

产生

d12 = {'a': [1, 2], 'b': [2, [2, 3]], 'c': [3], 'd': [3]}
Run Code Online (Sandbox Code Playgroud)

不想要的输出。

我在 SO 上搜索了一下,发现这篇文章回答了我的问题,前提是它没有吐TypeError: can only concatenate tuple (not "int") to tuple.

python dictionary python-3.x

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

检查列表中值类型的最有效方法

我有一个包含列表的列表。例如:

lst = [1, 2, 'c', [4, 5], 'f', ['g', 'h', 'i']]
Run Code Online (Sandbox Code Playgroud)

我想在中找到列表的索引lst(inlst是 3 和 5)。

到目前为止我所拥有的:

lst_idx = [lst.index(val) for val in lst if type(val) is list]
Run Code Online (Sandbox Code Playgroud)

但是,我的实际数据有数千个列表,每个列表都有数千个元素,因此上面的列表理解需要花费大量时间。有没有办法以某种矢量化的形式做?理想情况下,我想要某种长度的掩码,len(lst)如果列表为假,则为真。

python numpy

0
推荐指数
1
解决办法
35
查看次数