小编Psy*_*ath的帖子

为什么新的 Conda 环境没有像 numpy 这样的包?

我正在经历学习如何在 Python/Anaconda 中管理包/不同(虚拟)环境的痛苦过程。有人告诉我 Anaconda 基本上是一个 python 安装,其中包含我需要的所有软件包(例如 numpy、scipy、sci-kit learn 等)。

但是,当我创建一个新环境时,这些包都不是现成的。在新创建的环境中使用 PyCharm 时,我无法导入它们。当我检查 Pycharm 项目解释器或 anaconda navigator 环境选项卡时,似乎这些软件包都没有安装在我的新环境中。这是为什么?提供所有这些包对我来说没有意义,但在创建新环境时不准备使用它们。我是否必须在新环境中手动安装所有这些软件包,还是我遗漏了什么?

最诚挚的问候,并提前致谢。

python package anaconda conda

11
推荐指数
1
解决办法
1万
查看次数

切换 git 分支时我应该删除 .eslintcache 吗?

因为 .eslintcache 文件不能被 git 跟踪,所以当你被签入一个分支并且代码用 --cache 标志检查时,它会生成一个 .eslintcache 文件。稍后您切换到另一个分支,代码再次被检查。在这种情况下,缓存文件已经存在,所以 eslint 理论上会重用它,但我们不能假设之前的缓存文件是有效的。那么切换分支的时候不应该删除.eslintcache文件吗?

git eslint

8
推荐指数
1
解决办法
3514
查看次数

将列表理解与生成器表达式进行比较时出现意外结果

我认为我忽略了一些简单的事情,但似乎无法弄清楚到底是什么。请考虑以下代码:

a = [2, 3, 4, 5]

lc = [ x for x in a if x >= 4 ] # List comprehension
lg = ( x for x in a if x >= 4 ) # Generator expression

a.extend([6,7,8,9])

for i in lc:
    print("{} ".format(i), end="")

for i in lg:
    print("{} ".format(i), end="")
Run Code Online (Sandbox Code Playgroud)

我希望两个for循环都会产生相同的结果,所以4 5。但是,打印生成器exp的for循环会打印4 5 6 7 8 9。我认为这与列表理解的声明(在扩展之前声明)有关。但是,为什么生成器的结果与在扩展列表之前也声明过的不同呢?例如内部发生了什么?

python list generator

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

为什么 3D numpy 数组按原样打印(它们是如何排序的)?

我试图理解 3D 数组(或者一般的多维数组),但这有点让我大吃一惊。尤其是 3D numpy 数组的打印方式对我来说是违反直觉的。这个问题类似,但更多的是关于编程语言之间的差异,我仍然没有完全理解。让我尝试解释一下。

假设我想创建一个 3 行(长度)、5 列(宽度)和 2 深度的 3D 数组。所以是一个 3x5x2 矩阵。

我执行以下操作:

import numpy as np
a = np.zeros(30).reshape(3, 5, 2)
Run Code Online (Sandbox Code Playgroud)

对我来说,打印此内容的逻辑方法如下:

[[[0. 0. 0. 0. 0.]  #We can still see three rows from top to bottom
  [0. 0. 0. 0. 0.]] #We can still see five columns from left to right

 [[0. 0. 0. 0. 0.]  #Depth values are shown underneath each other
  [0. 0. 0. 0. 0.]] 

 [[0. 0. 0. 0. …
Run Code Online (Sandbox Code Playgroud)

python numpy multidimensional-array numpy-ndarray

6
推荐指数
1
解决办法
2235
查看次数

使用 conda 从 Anaconda 导入 numpy 时出错(DLL 加载失败:找不到指定的模块)

当我使用 Anaconda 时,导入 numpy 会出现以下错误:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File"C:\Users\s140041\Anaconda3\envs\testenv\lib\site-packages\numpy\__init__.py", line 142, in <module>
    from . import add_newdocs
  File"C:\Users\s140041\Anaconda3\envs\testenv\lib\site-packages\numpy\add_newdocs.py", line 13, in <module>
    from numpy.lib import add_newdoc
  File "C:\Users\s140041\Anaconda3\envs\testenv\lib\site-packages\numpy\lib\__init__.py", line 8, in <module>
    from .type_check import *
  File"C:\Users\s140041\Anaconda3\envs\testenv\lib\site-packages\numpy\lib\type_check.py", line 11, in <module>
    import numpy.core.numeric as _nx
  File"C:\Users\s140041\Anaconda3\envs\testenv\lib\site-packages\numpy\core\__init__.py", line 26, in <module>
    raise ImportError(msg)

ImportError:
Importing the multiarray numpy extension module failed.  Most
likely you are trying to import a failed build …
Run Code Online (Sandbox Code Playgroud)

python pip pycharm anaconda conda

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

返回字典中的三个最大值

我有以下字典:

'{0: 0, 1: 11, 2: 26, 3: 43, 4: 14, 5: 29, 6: 34, 7: 49, 8: 49, 9: 108, 10: 124, 11: 108, 12: 361, 13: 290, 14: 2118, 15: 5408, 16: 43473, 17: 109462, 18: 111490, 19: 244675, 20: 115878, 21: 6960}'
Run Code Online (Sandbox Code Playgroud)

对于这个字典,我想写一个函数,它返回具有最高值的三个键值对(所以在这种情况下键18,19,20).

我想出了以下内容:

cachedict = nr_of_objects_per_century() #Dictionary mentioned above

def top_3_centuries():
        max_nr_works_list = sorted(cachedict.values())
        top_3_values = []
        for i in range(len(max_nr_works_list)-3, len(max_nr_works_list)):
            top_3_values.append(max_nr_works_list[i])
            print(top_3_values)
Run Code Online (Sandbox Code Playgroud)

这给了我一个我想要查找的最大值的列表.但是我怎么从这里开始呢?有没有办法在没有反向查找的情况下做到这一点(这对词典来说很慢,对吧?)我觉得我可以更有效地/ pythonic地完成这项任务.

python sorting dictionary

5
推荐指数
2
解决办法
145
查看次数

在 Keras 上使用 TensorFlow 后端时的奇怪输出(OMP:Info #xx KMP_AFFINITY)

我使用带有 TensorFlow 后端的 Keras 来训练神经网络模型。这是一个简单的模型(来自教程),一切正常。模型预测它应该的方式。似乎只有 tensorflow 输出信息,我不知道我是否可以安全地忽略它/它意味着什么。有人能解释一下下面的输出告诉我们什么吗?尤其是所有以 开头的台词OMP我都不清楚。弃用警告并没有真正让我担心。

Using TensorFlow backend.
OMP: Info #212: KMP_AFFINITY: decoding x2APIC ids.
OMP: Info #210: KMP_AFFINITY: Affinity capable, using global cpuid leaf 11 info
OMP: Info #154: KMP_AFFINITY: Initial OS proc set respected: 0-7
OMP: Info #156: KMP_AFFINITY: 8 available OS procs
OMP: Info #157: KMP_AFFINITY: Uniform topology
OMP: Info #179: KMP_AFFINITY: 1 packages x 4 cores/pkg x 2 threads/core (4 total cores)
OMP: Info #214: KMP_AFFINITY: OS proc to physical thread …
Run Code Online (Sandbox Code Playgroud)

python keras tensorflow

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

使用 dataframe.mean()(Pandas 性能非数字列)时,运行时间出现奇怪的指数增长

我正在使用天气数据集(要重现;可以在此处找到数据,解压缩它并运行下面的代码),我想对数据进行规范化。为此,我尝试了这个问题的第二个答案;

规范化熊猫数据框的列

归结为 normalized_df=(df-df.mean(axis=0))/df.std(axis=0)

但是,执行此代码需要很长时间。因此,我开始调查,似乎df.mean()调用所花费的时间呈指数增长。

我使用以下代码来测试运行时:

import pandas as pd
import time

jena_climate_df = pd.read_csv("jena_climate_2009_2016.csv")
start = time.time()
print(jena_climate_df[:200000].mean(axis=0)) #Modify the number of rows here to observe the increase in time
stop = time.time()
print(f"{stop-start} Seconds for mean calc")
Run Code Online (Sandbox Code Playgroud)

我进行了一些测试,选择逐渐增加用于平均计算的行数。查看以下结果:

0.004987955093383789 Seconds for mean calc ~ 10 observations
0.009006738662719727 Seconds for mean calc ~ 1000 observations
0.0837397575378418 Seconds for mean calc ~ 10000 observations
1.789750337600708 Seconds for mean calc ~ 50000 observations …
Run Code Online (Sandbox Code Playgroud)

python pandas

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

为什么(或为什么不)将Anaconda添加到路径?

我在此问题中找到了部分答案:是否 将Anaconda添加到Path

但是我仍然不完全了解。从正常安装的Python切换到Anaconda时,我遇到了很多安装问题,需要我完全重新安装Windows。所以我现在就想解决这个问题。

当我将Anaconda(或python)添加到PATH时,内部会发生什么?我计划针对不同的python版本使用单独的conda环境,如果在安装路径中添加Anaconda可能会出错吗?在安装中进行安装或稍后通过命令提示符进行处理之间有什么区别?这会影响我将Anaconda与PyCharm集成的能力吗?

python path pycharm anaconda conda

3
推荐指数
2
解决办法
6939
查看次数

将开发合并到主分支的正确方法

我在一家公司工作,我们决定要更正确地使用 git。我负责将开发分支集成到主分支中,我对如何在不同场景下正确合并感到困惑。

我们现在的工作方式:开发人员只需在dev分支上重新调整他们的功能分支即可。完成后,他们将向dev分支提交合并请求。然后,我会检查代码(我们是一个小团队),并接受合并请求。之后他们只需删除功能分支即可。当dev分支经过正确测试后,我会在 GitLab 中创建一个到主分支的合并请求,将其分配给我自己并批准它。这会在main分支上创建一个提交:

将分支“dev”合并到“main”

然而,现在该dev分支落后了一次提交main。我该如何最好地解决这个问题?到目前为止,我只是简单地再次合并main,dev但这看起来很麻烦而且奇怪,因为它们现在是我dev分支中的另一个提交;

将分支“main”合并到“dev”

我也可以在 main 上对 dev 进行 rebase,但我了解到“你永远不能对公共分支进行 rebase”

这个问题告诉我正确的方法是首先将 main 合并到 dev 中,以确保 main 分支保持干净。这是实现合并的最佳方式吗dev --> main?

这是否受到 git fast-forwards 默认合并这一概念的影响?我读到,当从当前分支尖端到目标分支存在线性路径时,就会发生快进合并。这意味着,当合并时dev分支只是在x提交 to之前main,并且同时没有对 main 进行提交(这在我们的工作中很常见,因为我们技术上只提交 from main)dev,合并将自动进行快进合并?这种行为对于合并dev到来说是否有问题main,-no-ff合并时是否应该使用该标志?

如果我理解正确,则快进合并会将提交集成dev到分支中main,而--no-ff合并会导致合并始终创建一个新的提交对象,即使可以通过 …

git git-merge

2
推荐指数
1
解决办法
3505
查看次数

使用conda tensorflow-gpu包之前是否还需要安装CUDA?

当我通过 Conda 安装 tensorflow-gpu 时;它给了我以下输出:

conda install tensorflow-gpu
Collecting package metadata (current_repodata.json): done
Solving environment: done


## Package Plan ##

  environment location: /home/psychotechnopath/anaconda3/envs/DeepLearning3.6

  added / updated specs:
    - tensorflow-gpu


The following packages will be downloaded:

    package                    |            build
    ---------------------------|-----------------
    _tflow_select-2.1.0        |              gpu           2 KB
    cudatoolkit-10.1.243       |       h6bb024c_0       347.4 MB
    cudnn-7.6.5                |       cuda10.1_0       179.9 MB
    cupti-10.1.168             |                0         1.4 MB
    tensorflow-2.1.0           |gpu_py36h2e5cdaa_0           4 KB
    tensorflow-base-2.1.0      |gpu_py36h6c5654b_0       155.9 MB
    tensorflow-gpu-2.1.0       |       h0d30ee6_0           3 KB
    ------------------------------------------------------------
                                           Total:       684.7 MB

The following NEW packages …
Run Code Online (Sandbox Code Playgroud)

python cuda conda tensorflow cudnn

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