小编sam*_*sam的帖子

酸洗时保留numpy视图

默认情况下,即使阵列基础被腌制,对numpy视图数组进行pickle也会丢失视图关系.我的情况是我有一些复杂的容器对象被腌制.在某些情况下,某些包含的数据是其他一些数据.保存每个视图的独立数组不仅会丢失空间,而且重新加载的数据也会丢失视图关系.

一个简单的例子是(但在我的例子中,容器比字典更复杂):

import numpy as np
import cPickle

tmp = np.zeros(2)
d1 = dict(a=tmp,b=tmp[:])    # d1 to be saved: b is a view on a

pickled = cPickle.dumps(d1)
d2 = cPickle.loads(pickled)  # d2 reloaded copy of d1 container

print 'd1 before:', d1
d1['b'][:] = 1
print 'd1 after: ', d1

print 'd2 before:', d2
d2['b'][:] = 1
print 'd2 after: ', d2
Run Code Online (Sandbox Code Playgroud)

哪个会打印:

d1 before: {'a': array([ 0.,  0.]), 'b': array([ 0.,  0.])}
d1 after:  {'a': array([ 1.,  1.]), 'b': …
Run Code Online (Sandbox Code Playgroud)

python numpy view pickle

9
推荐指数
1
解决办法
363
查看次数

源代码发布相对于二进制发布的优势?

我现在了解软件的源代码版本和二进制版本之间的主要区别。一个很好的问题在这里

我需要在 Linux 机器上安装 Node.js,并选择了二进制版本,因为它不需要编译/安装。我下载了 tar,解压缩文件,它已经准备好了。

我的问题是,当两种选择都可用时,人们会出于什么原因选择源代码而不是二进制文件?

我唯一能想到的是这个人希望阅读/研究源代码。

software-distribution

9
推荐指数
1
解决办法
289
查看次数

Elasticsearch脚本 - 未定义的变量

我正在关注Elasticsearch 教程,但在尝试在脚本中使用参数时遇到了问题.

第1步:创建一个新文档 - 确定(index = website; type = blog; id = 1)

curl -XPUT localhost:9200/website/blog/1?pretty -d '{
  "title":"my first post",
  "tags" : [ "tag1" ]
}'
Run Code Online (Sandbox Code Playgroud)

第2步:使用脚本向tags数组附加一个额外的值- 错误

curl -XPOST localhost:9200/website/blog/1/_update?pretty -d '{
   "script" : "ctx._source.tags+=new_tag",
   "params" : {
      "new_tag" : "tag2"
   }
}'
Run Code Online (Sandbox Code Playgroud)

错误信息是这样,提到"reason" : "Variable [new_tag] is not defined."但是我已经按照new_tag教程页面上的描述定义了变量.我究竟做错了什么?

  "error" : {
    "root_cause" : [
      {
        "type" : "remote_transport_exception",
        "reason" : "[mrukUvA][127.0.0.1:9300][indices:data/write/update[s]]"
      }
    ],
    "type" : "illegal_argument_exception", …
Run Code Online (Sandbox Code Playgroud)

elasticsearch

8
推荐指数
2
解决办法
7153
查看次数

将HDF5文件读入numpy数组

我有以下代码将hdf5文件作为numpy数组读取:

hf = h5py.File('path/to/file', 'r')
n1 = hf.get('dataset_name')
n2 = np.array(n1)
Run Code Online (Sandbox Code Playgroud)

当我打印n2我得到这个:

Out[15]:
array([[<HDF5 object reference>, <HDF5 object reference>,
        <HDF5 object reference>, <HDF5 object reference>...
Run Code Online (Sandbox Code Playgroud)

如何阅读HDF5 object reference查看存储在其中的数据?

python numpy hdf5 h5py

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

提高将numpy数组转换为MATLAB的性能

从Python调用MATLAB必然会通过在Python中重写(很多)代码来减少性能.然而,这对我来说不是一个现实的选择,但令我很恼火的是,效率的巨大损失在于从numpy数组到MATLAB double的简单转换.

我在谈论从data1到data1m的以下转换,其中

data1 = np.random.uniform(low = 0.0, high = 30000.0, size = (1000000,))
data1m = matlab.double(list(data1))
Run Code Online (Sandbox Code Playgroud)

这里matlab.double来自Mathworks自己的MATLAB包/引擎.第二行代码在我的系统上花费了20秒,对于一个除了使数字"可食用"MATLAB之外没有真正做任何事情的转换似乎太多了.

所以基本上我正在寻找与此处给出的相反的技巧,该技巧适用于将MATLAB输出转换回Python.

python matlab numpy

7
推荐指数
2
解决办法
1759
查看次数

安装`conda-forge`包时如何更喜欢`defaults` numpy over`conda-forge` numpy

我更喜欢使用defaultsContinuum提供的常用频道中的MKL工具链.但是,和许多人一样,我发现自己从conda-forge频道安装了不少套餐.

例如,考虑python-graphviz包.安装命令是

conda install -c conda-forge python-graphviz
Run Code Online (Sandbox Code Playgroud)

这导致一些不希望的依赖变化

The following packages will be UPDATED:

cvxopt:          1.1.7-py27_0          --> 1.1.9-py27_blas_openblas_201  conda-forge [blas_openblas]
gsl:             2.2.1-h8267d9d_2      --> 2.2.1-blas_openblas_2         conda-forge [blas_openblas]
numpy:           1.13.3-py27hbcc08e0_0 --> 1.13.3-py27_blas_openblas_200 conda-forge [blas_openblas]
scikit-learn:    0.19.1-py27h445a80a_0 --> 0.19.1-py27_blas_openblas_200 conda-forge [blas_openblas]
scipy:           0.19.1-py27h1edc525_3 --> 0.19.1-py27_blas_openblas_202 conda-forge [blas_openblas]
Run Code Online (Sandbox Code Playgroud)

我不想更改为OpenBlas numpy,因此我手动处理所有依赖项然后

conda install -c conda-forge --no-deps python-graphviz
Run Code Online (Sandbox Code Playgroud)

这工作正常,但很费力,并会招致错误.

我原以为如果我添加conda-forge了低优先级通道

conda config --append channels conda-forge
Run Code Online (Sandbox Code Playgroud)

然后它会停止尝试覆盖numpy安装,但事实证明这是不真实的.conda config --show正如预期的那样,现在的输出包含

channel_alias: https://conda.anaconda.org
channel_priority: True
channels: …
Run Code Online (Sandbox Code Playgroud)

packages numpy conda

7
推荐指数
2
解决办法
1176
查看次数

numpy 多维(3d)矩阵乘法

我得到两个 3d 矩阵 A(32x3x3)和 B(32x3x3),我想得到维度为 32x3x3 的矩阵 C。计算可以使用循环完成,如:

a = numpy.random.rand(32, 3, 3)
b = numpy.random.rand(32, 3, 3)
c = numpy.random.rand(32, 3, 3)

for i in range(32):
    c[i] = numpy.dot(a[i], b[i])
Run Code Online (Sandbox Code Playgroud)

我相信必须有一个更有效的单线解决方案来解决这个问题。有没有人可以帮忙,谢谢。

python numpy matrix multidimensional-array matrix-multiplication

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

终端中的Python:如何表示for循环的结束?

说我要打印0通过9.

我输入for i in range(10): print(i),按下enter和终端显示...,等待进一步的陈述.

所以我必须enter再次按下以打印数字.

>>> for i in range(10): print(i)
...
Run Code Online (Sandbox Code Playgroud)

如何打印号码而不必按enter两次?

python terminal

6
推荐指数
2
解决办法
2万
查看次数

合并两个numpy数组

我试图合并具有相同数量的参数的两个数组.

输入:

first = [[650001.88, 300442.2,   18.73,  0.575,  650002.094, 300441.668, 18.775],
         [650001.96, 300443.4,   18.7,   0.65,   650002.571, 300443.182, 18.745],
         [650002.95, 300442.54,  18.82,  0.473,  650003.056, 300442.085, 18.745]]

second = [[1],
          [2],
          [3]]
Run Code Online (Sandbox Code Playgroud)

我的预期产量:

final = [[650001.88, 300442.2,   18.73,  0.575,  650002.094, 300441.668, 18.775, 1],
             [650001.96, 300443.4,   18.7,   0.65,   650002.571, 300443.182, 18.745, 2],
             [650002.95, 300442.54,  18.82,  0.473,  650003.056, 300442.085, 18.745, 3]]
Run Code Online (Sandbox Code Playgroud)

要做到这一点,我创建简单的循环:

for i in first:
        for j in second:
            final += np.append(j, i)
Run Code Online (Sandbox Code Playgroud)

我得到了我填补我遗失的东西.首先,我的循环非常慢.其次我的数据非常多,我有超过2毫升的行循环.所以我尝试使用此代码找到更快的方法:

final = [np.append(i, second[0]) for i in first] 
Run Code Online (Sandbox Code Playgroud)

它的工作速度比前一个循环快得多,但它仅附加第二个数组的第一个值.你能帮助我吗?

arrays merge numpy python-3.x

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

Maven:清洁是一个生命周期还是一个阶段?

我了解生命周期包含阶段,并且阶段可能具有与其绑定的插件目标。

但生命周期clean还是阶段?

构建生命周期的介绍似乎表明clean它既是一个生命周期又是一个阶段:

共有三个内置的构建生命周期:default、clean和 site。

...

clean和 package 参数是构建阶段,而 dependency:copy - dependencies 是(插件的)目标。mvn clean dependency:copy-dependencies package

maven

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