小编mgo*_*ser的帖子

在python中排序文本文件的内容后文件中的空白行

我有这个小脚本来排序文本文件的内容

# The built-in function `open` opens a file and returns a file object.

# Read mode opens a file for reading only.
try:
    f = open("tracks.txt", "r")


    try:
        # Read the entire contents of a file at once.
       # string = f.read() 
        # OR read one line at a time.
        #line = f.readline()
        # OR read all the lines into a list.
        lines = f.readlines()
        lines.sort()
        f.close()
        f = open('tracks.txt', 'w')
        f.writelines(lines) # Write a sequence of strings to …
Run Code Online (Sandbox Code Playgroud)

python

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

glmnet中的R错误:外部函数调用中的NA/NaN/Inf

我正在尝试使用glmnet创建一个模型,(目前使用cv来查找lambda值),我收到一个错误NA/NaN/Inf in foreign function call (arg 5).我相信这与我的数据集中的NA值有关,因为当我用NA删除所有数据点时,命令成功运行.

我的印象是glmnet 可以处理NA值.我不确定错误来自哪里:

> res <- cv.glmnet(features.mat, as.factor(tmp[,"outcome"]), family="binomial")
Error in lognet(x, is.sparse, ix, jx, y, weights, offset, alpha, nobs,  : 
  NA/NaN/Inf in foreign function call (arg 5)
Run Code Online (Sandbox Code Playgroud)

数据集看起来像这样:

> head(features.mat)
6 x 8 sparse Matrix of class "dgCMatrix"
   a b   c  e  f  g  h i
1  1 1 138 NA NA 15 NA .
4  1 3 171 NA NA 17 NA .
7  1 1 156 NA NA …
Run Code Online (Sandbox Code Playgroud)

r sparse-matrix glmnet na

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

在golang中初始化包含一片结构的结构

我有一个结构,我想用golang中的一些结构初始化,但我想弄清楚是否有更高效的版本将每个新生成的结构附加到切片:

package main

import (
    "fmt"
    "math/rand"
)

type LuckyNumber struct {
    number int
}

type Person struct {
    lucky_numbers []LuckyNumber
}

func main() {
    count_of_lucky_nums := 10
    // START OF SECTION I WANT TO OPTIMIZE
    var tmp []LuckyNumber
    for i := 0; i < count_of_lucky_nums; i++ {
        tmp = append(tmp, LuckyNumber{rand.Intn(100)})
    }
    a := Person{tmp}
    // END OF SECTION I WANT TO OPTIMIZE
    fmt.Println(a)
}
Run Code Online (Sandbox Code Playgroud)

struct go slice

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

在PostgreSQL中将smallint转换为boolean

我试图在PostgreSQL中将smallint强制转换为布尔值.这不是开箱即用的,例如:

select (1::smallint)::bool;
Run Code Online (Sandbox Code Playgroud)

返回"错误:42846:无法将类型smallint强制转换为布尔值"

我可以使用以下方法修复:

select (1::smallint)::int::bool;
Run Code Online (Sandbox Code Playgroud)

但我想知道是否有一种方法可以定义如何smallint直接投射到boolean

这样做的原因是我(和我合作的其他人)都有汇总查询,这些查询将int数据库表中的列强制转换为boolean.我想将此列更改为smallint,但这样做会制止这种逻辑,因为没有直接转换smallintboolean.是否可以使用postgres CREATE CAST定义如何将a smallint转换为boolean

postgresql casting

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

在python中通过键减少

我正在尝试通过python中最有效的方式来思考.

假设我有一个元组列表:

[('dog',12,2), ('cat',15,1), ('dog',11,1), ('cat',15,2), ('dog',10,3), ('cat',16,3)]
Run Code Online (Sandbox Code Playgroud)

假设我有一个函数,它接受这些元组中的两个并组合它们:

def my_reduce(obj1, obj2):
    return (obj1[0],max(obj1[1],obj2[1]),min(obj1[2],obj2[2]))
Run Code Online (Sandbox Code Playgroud)

如何通过'key'执行有效的减少,其中key可以是第一个值,因此最终结果将是:

[('dog',12,1), ('cat',16,1)]
Run Code Online (Sandbox Code Playgroud)

python reduce

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

在读取文件的生成器上进行Python多处理

我正在尝试读取和处理1000个文件,但不幸的是,处理文件的时间大约是从磁盘读取文件的3倍,因此我希望在读入时处理这些文件(当我在我继续阅读其他文件).

在一个完美的世界中,我有一个一次读取一个文件的生成器,我想将这个生成器传递给一个工作池,这些工作器在(缓慢)生成时处理来自生成器的项目.

这是一个例子:

def process_file(file_string):
     ...
     return processed_file

 pool = Pool(processes=4)
 path = 'some/path/'
 results = pool.map(process_file, (open(path+part,'rb').read() for part in os.listdir(path)))
Run Code Online (Sandbox Code Playgroud)

上面代码的唯一问题是在池开始之前所有文件都被读入内存,这意味着我需要等待磁盘读取所有内容,并且还消耗大量内存.

python multiprocessing python-multiprocessing

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

将RDD写入PySpark中的多个文件

我有一个包含键值对的rdd.只有3个键,我想将给定键的所有元素写入文本文件.目前我在3次传球中这样做,但我想知道我是否可以一次传球.

这是我到目前为止:

# I have an rdd (called my_rdd) such that a record is a key value pair, e.g.: 
# ('data_set_1','value1,value2,value3,...,value100')

my_rdd.cache()
my_keys = ['data_set_1','data_set_2','data_set_3']
for key in my_keys:
    my_rdd.filter(lambda l: l[0] == key).map(lambda l: l[1]).saveAsTextFile(my_path+'/'+key)
Run Code Online (Sandbox Code Playgroud)

这是有效的,但缓存它并迭代三次可能是一个漫长的过程.我想知道是否有任何方法可以同时写入所有三个文件?

python apache-spark pyspark

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

以最小的内存占用分割大型Pandas Dataframe

我有一个大型DataFrame,我想分成一个测试集和一个用于模型构建的训练集.但是,我不想复制DataFrame,因为我达到了内存限制.

是否存在类似于pop但对于大段的操作,它会同时删除DataFrame的一部分并允许我将其分配给新的DataFrame?像这样的东西:

# Assume I have initialized a DataFrame (called "all") which contains my large dataset, 
# with a boolean column called "test" which indicates whether a record should be used for
# testing.
print len(all)
# 10000000 
test = all.pop_large_segment(all[test]) # not a real command, just a place holder
print len(all)
# 8000000
print len(test)     
# 2000000
Run Code Online (Sandbox Code Playgroud)

python dataframe pandas

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

在Jupyter Notebook中恢复命令历史记录?

我过去一周一直在编辑一个Jupyter笔记本,并试着今天保存它.在尝试保存它时,我收到了一个错误,所以我刷新了页面并成功保存了它.

但令我沮丧的是,几乎所有的命令历史都丢失了!我仍然可以访问变量(内核永远不会死),但我无法访问任何代码.

有没有办法恢复代码?内核仍在运行,但我的笔记本中没有看到任何检查点.

python ipython python-3.x jupyter jupyter-notebook

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

sci-kit中的规范化学习linear_models

如果True在任何线性模型中将标准化参数设置为sklearn.linear_model,则在评分步骤期间应用标准化吗?

例如:

from sklearn import linear_model
from sklearn.datasets import load_boston

a = load_boston()

l = linear_model.ElasticNet(normalize=False)
l.fit(a["data"][:400], a["target"][:400])
print l.score(a["data"][400:], a["target"][400:])
# 0.24192774524694727

l = linear_model.ElasticNet(normalize=True)
l.fit(a["data"][:400], a["target"][:400])
print l.score(a["data"][400:], a["target"][400:])
# -2.6177006348389167
Run Code Online (Sandbox Code Playgroud)

在这种情况下,我们在设置时看到预测功率的下降normalize=True,并且我无法判断这是否仅仅是score未应用归一化的函数的伪像,或者归一化值是否导致model性能下降.

python normalization linear-regression scikit-learn

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