小编met*_*eto的帖子

为什么collections.Counter是大写而collections.defaultdict不是?

模块中的某些元素collections似乎是大写的,而另一些则不是。其背后是否有具体的理由?

python collections class-names python-collections

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

在自定义类中实现 __next__

我有一堂课看起来像这样

Class myClass:

    def __init__(self, key, value):
        self.key = key
        self.value = value
Run Code Online (Sandbox Code Playgroud)

其中key是一个字符串,并且value始终是 myClass 的元素列表,可能为空。

我想定义我自己的 iter 方法,该方法返回value.key每个valuein values。我试过

def __iter__(self):
    return self 

def __next__(self):
    try:
        self.value.next().key
    except:
        raise StopIteration
Run Code Online (Sandbox Code Playgroud)

但它永远循环。我究竟做错了什么?另外,如果我想具有 Python 2 / 3 兼容性,我应该添加该方法吗

def next(self):
    return self.__next__()
Run Code Online (Sandbox Code Playgroud)

python class

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

结合Keras功能模型

我试图模仿这个关于微调图像分类器的keras博客.我想使用fchollet repo上的Inceptionv3 .

初始是一个Model(功能API),所以我不能只做model.add(top_model)保留的Sequential.

如何添加组合两个功能Model?让我说我有

inputs = Input(shape=input_shape)
x = Flatten()(inputs)
predictions = Dense(4, name='final1')(x)

model1 = Model(input=inputs, output=predictions)
Run Code Online (Sandbox Code Playgroud)

对于第一个模型和

inputs_2 = Input(shape=(4,))
y = Dense(5)(l_inputs)
y = Dense(2, name='final2')(y)
predictions_2 = Dense(29)(y)
model2 = Model(input=inputs2, output=predictions2)
Run Code Online (Sandbox Code Playgroud)

为了第二个.我现在想结束到终端,从去inputspredicions_2和链接predictionsinputs_2.

我试过使用,model1.get_layer('final1').output但我与类型不匹配,我无法使其工作.

python deep-learning keras

4
推荐指数
3
解决办法
8896
查看次数

修改列表中的dataFrames无效

我有两个DataFrames,我想执行相同的清洁操作列表.我意识到我可以合并为一个,并且可以合并到一个通道中,但我仍然很好奇为什么这个方法不起作用

test_1 = pd.DataFrame({
    "A": [1, 8, 5, 6, 0],
    "B": [15, 49, 34, 44, 63]
})
test_2 = pd.DataFrame({
    "A": [np.nan, 3, 6, 4, 9, 0],
    "B": [-100, 100, 200, 300, 400, 500]
})
Run Code Online (Sandbox Code Playgroud)

让我们假设我只想在没有NaNs的情况下使用原始数据:我试过了

for df in [test_1, test_2]:
    df = df[pd.notnull(df["A"])]
Run Code Online (Sandbox Code Playgroud)

test_2没有动过.另一方面,如果我这样做:

test_2 = test_2[pd.notnull(test_2["A"])]
Run Code Online (Sandbox Code Playgroud)

现在我第一个原始消失了.

python iteration list pandas

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

等待一个例程完成的正确方法

我想知道在退出程序之前等待程序完成的正确方法是什么.阅读其他一些答案似乎bool chan会做到这一点,就像Playground链接一样

func do_stuff(done chan bool) {
    fmt.Println("Doing stuff")
    done <- true
}

func main() {
    fmt.Println("Main")
    done := make(chan bool)
    go do_stuff(done)
    <-done
    //<-done
}
Run Code Online (Sandbox Code Playgroud)

我这里有两个问题:

  • 为什么< - 完成工作?

  • 如果我取消注释最后一行会发生什么?我有一个死锁错误.这是因为频道是空的,没有其他功能向它发送值?

channel go goroutine

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

Pandas:从元组生成器创建系列

有没有办法pd.Series从元组生成器创建一个?我的代码如下所示,但我确信有更好的方法:

import numpy as np
import pandas as pd
g = ((n, s) for n, s in [("A", 1), ("B", 2), ("C", 3), ("D", 4), ("E", 5)])
arr = np.array(list(g))
ind, val = arr[:, 0], arr[:, 1]

pd.Series(val, index=ind)
Run Code Online (Sandbox Code Playgroud)

python generator pandas

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

np数组作为可选参数

我有一个函数可以接受两个可选np.array的参数.如果两者都通过,该功能应该执行一些任务.

def f(some_stuff, this=None, that=None):
    ...do something...
    if this and that:
       perform_the_task()
Run Code Online (Sandbox Code Playgroud)

如果没有传递任何可选参数,这将按预期工作.如果我通过了np.array然后我获得了错误

ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()
Run Code Online (Sandbox Code Playgroud)

是否有更紧凑的方法来检查额外的args是否通过?我想我可以安全地假设,如果他们通过,那么他们将是np.array.

python arrays numpy

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

Go中的Webcrawler

我正在尝试在Go中构建一个Web搜寻器,我想在其中指定并发工作器的最大数量。只要队列中有要探索的链接,他们都将工作。当队列中的元素少于工作者时,工作者应该大声喊叫,但如果发现更多链接,请继续执行。

我试过的代码是

const max_workers = 6
// simulating links with int
func crawl(wg *sync.WaitGroup, queue chan int) {
    for element := range queue {   
        wg.Done() // why is defer here causing a deadlock?
        fmt.Println("adding 2 new elements ")
        if element%2 == 0 {
            wg.Add(2)
            queue <- (element*100 + 11)
            queue <- (element*100 + 33)
        }

    }
}

func main() {
    var wg sync.WaitGroup
    queue := make(chan int, 10)
    queue <- 0
    queue <- 1
    queue <- 2
    queue <- 3 …
Run Code Online (Sandbox Code Playgroud)

web-crawler go

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

Haskell:函数组合的类型不匹配

我在功能构成和类型方面遇到了一些麻烦.我想撰写filter(返回一个列表)len,其中列表作为参数(技术上是一个,Foldable但我在这里简化).查看类型一切都如预期:

> :t length
length :: Foldable t => t a -> Int

> :t filter
filter :: (a -> Bool) -> [a] -> [a]
Run Code Online (Sandbox Code Playgroud)

所以现在我期待的类型(len . filter)

(length . filter) :: (a -> Bool) -> [a] -> Int
Run Code Online (Sandbox Code Playgroud)

而实际上是

> :t (length . filter)
(length . filter) :: Foldable ((->) [a]) => (a -> Bool) -> Int
Run Code Online (Sandbox Code Playgroud)

所以我似乎失去了一些论点.是否Foldable以某种方式包含在要求中我不理解?

请注意,如果我进行部分应用,一切都按预期工作:

> let myFilter = filter odd
> :t myFilter
myFilter …
Run Code Online (Sandbox Code Playgroud)

haskell types functional-programming combinators function-composition

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

选择满足条件的元素

我想从(非常长)列表中选择满足条件的特定元素.在我的特定情况下,列表中的每个项目都是一个类,我想要的条件是,例如,item.id == 1.

我开始了

[item for item in collection if item.id == 1]
Run Code Online (Sandbox Code Playgroud)

但我不想遍历整个列表,因为我确信只有一个元素满足条件.

另一种选择是

def check(collection):
    for item in collection:
        if item.id == 1:
            return item
Run Code Online (Sandbox Code Playgroud)

有更有效的方法吗?Python 3是否具有内置功能?另一种选择可以是预处理列表以获得字典,例如

{item.id : item for item in collection}
Run Code Online (Sandbox Code Playgroud)

python performance list python-3.x

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