【问题标题】:Kernel dies after using np.logical_and使用 np.logical_and 后内核死机
【发布时间】:2020-10-03 11:56:39
【问题描述】:

所以我创建了一个示例数据集,如下所示:

import numpy as np
import pandas as pd

x = range(1, 10)
arr1 = [1, 2, 3, 4, 5, 6, 7, 8, 9]
arr2 = np.random.randint(x)
arr3 = np.random.randint(x)
arr4 = np.random.randint(x)


dict_df = {
    'arr1' : arr1,
    'arr2' : arr2,
    'arr3' : arr3,
    'arr4' : arr4
}


df = pd.DataFrame(dict_df)

打印时效果很好,但当我尝试添加时:

filt = np.logical_and(df['arr1']==0, df['arr2']==0, df['arr3']==0) 

内核死了,(在屏幕顶部显示死内核)有什么想法吗?谢谢!

【问题讨论】:

  • 在 Jupyter Notebook 和 VS Code 中运行你的代码,效果很好。
  • @NYC 编码器我建议在 np.logical_and() 中添加第三项,如果可以,请查看是否可以再次运行它。
  • 如果你看logical_and的文档,你只能在文档中传递两个名为x1和x2的项目,而不是第三个项目
  • @Ben.T 有没有其他方法或方法可以传递 3 个项目?
  • @benito.cano 查看 NYC Coder 的答案 :)

标签: python pandas numpy jupyter-notebook cell


【解决方案1】:

np.logical_and 只接受 2 个参数。试试这个

filt = (df['arr1']==0) & (df['arr2']==0) & (df['arr3']==0)
print(filt)

0    False
1    False
2    False
3    False
4    False
5    False
6    False
7    False
8    False
dtype: bool

【讨论】:

    【解决方案2】:

    np.logical_and上使用ufunc.reduce

    s = np.logical_and.reduce([df['arr1']==0, df['arr2']==0, df['arr3']==0])
    
    Out[85]: array([False, False, False, False, False, False, False, False, False])
    

    【讨论】:

      猜你喜欢
      • 2021-06-11
      • 2022-01-07
      • 2019-03-02
      • 2018-03-04
      • 2017-02-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-09-29
      相关资源
      最近更新 更多