小编MSe*_*ert的帖子

根据其他两列的相等性创建新列

我想比较我创建新列的两列的值bin_crnn.如果他们是等于我想要1,否则想要0.

# coding: utf-8
import pandas as pd

df = pd.read_csv('file.csv',sep=',')

if df['crnn_pred']==df['manual_raw_value']:
    df['bin_crnn']=1
else:
    df['bin_crnn']=0
Run Code Online (Sandbox Code Playgroud)

我得到以下错误

    if df['crnn_pred']==df['manual_raw_value']:
  File "/home/ahmed/anaconda3/envs/cv/lib/python2.7/site-packages/pandas/core/generic.py", line 917, in __nonzero__
    .format(self.__class__.__name__))
ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().
Run Code Online (Sandbox Code Playgroud)

python dataframe pandas

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

从特定索引开始迭代所有Python列表值

有没有办法循环Python列表中的所有值,但从特定索引开始?

例如:

li = ['a', 'b', 'c', 'd']
Run Code Online (Sandbox Code Playgroud)

在索引1处开始循环并打印出结果.我的预期输出是:

['b', 'c', 'd', 'a']
Run Code Online (Sandbox Code Playgroud)

我知道使用两个"for循环"可以完成这项工作但有没有更好的方法来做到这一点?

python iteration indexing list python-3.x

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

列出樱桃采摘切片方法

表达问题相当简单,但我不能 100% 确定我的行话是正确的。尽管如此,从概念上讲,“樱桃采摘”很适合描述我心目中的切片。这是因为我只是想访问(从所有元素中挑选)列表中两个相距较远的元素。我试过这个:

my_list[2,7]
Run Code Online (Sandbox Code Playgroud)

所以我期望它只返回 2 个元素,但我得到了错误:

列表索引必须是整数,而不是元组。

我搜索了这个错误,但我发现这实际上是一个非常普遍的错误,并且引发此错误的问题实际上都不是针对我的问题类型的。

我想我可以一次提取元素 1 然后合并它们,但我的直觉告诉我有一种更“ Pythonic ”的方式。

我遇到的这个问题的一个稍微复杂的形式是从现有的列表列表中构建一个新列表:

new_list = []
for i in range(len(my_list)):
    new_list.append(my_list[i][2,7])
Run Code Online (Sandbox Code Playgroud)

python list python-3.x

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

无法向pyplot添加按钮?

我正在尝试在pyplot中添加一个按钮到我的窗口,就像在matplotlib.widgets的文档中给出的示例,我不能发布漏洞代码(SO的限制),但我认为问题在于标题

import matplotlib

import numpy as np
matplotlib.use('TkAgg')
from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg, NavigationToolbar2TkAgg
import matplotlib.pyplot as plt
from matplotlib.widgets import Slider, RadioButtons, Button

import time
import random
import sys
from tkinter import *

import matplotlib.animation as animation
import matplotlib.pyplot as plt
Run Code Online (Sandbox Code Playgroud)

并按钮实例化如下:

class Index(object):
    ind = 0

    def next(self, event):
        self.ind += 1
        print("just pressed next")

callback = Index()
axprev = plt.axes([0.7, 0.05, 0.1, 0.075])
axnext = plt.axes([0.81, 0.05, 0.1, 0.075])
bnext = Button(axnext, 'Next')
bnext.on_clicked(callback.next)
bprev = Button(axprev, 'Previous') …
Run Code Online (Sandbox Code Playgroud)

python tkinter matplotlib

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

当范围很大时,"for/range"会占用大量内存吗?

我担心的是:

for i in range(1000000000):
    ...
Run Code Online (Sandbox Code Playgroud)

从一个幼稚的角度来看,我假设在循环开始之前分配并初始化了一个包含1000000000个整数的数组,并且仅在循环结束后才释放.

所以我想知道我是否应该用以下代替:

i = 0
while i < 1000000000:
    ...
    i += 1
Run Code Online (Sandbox Code Playgroud)

但根据这个答案,for循环的执行速度比等效while循环快.

那么我是否必须接受这种权衡,或者我的假设是错误的,并且在迭代大量时没有显着的内存影响range

python memory for-loop python-2.7

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

For循环中的Python 2D列表

我已经构建了一个2D列表(我仍然想把它称为数组)来保存有关货币令牌的信息:

Token = [["P",0,.01,"Penny"],["N",0,.05,"Nickel"],["D",0,.10,"Dime"],["Q",0,.25,"Quarter"]]
Run Code Online (Sandbox Code Playgroud)

当我尝试使用此代码读取令牌的值时:

for i in Token:
    print (Token[i][3])
Run Code Online (Sandbox Code Playgroud)

我收到一个错误:

TypeError: list indices must be integers or slices, not list
Run Code Online (Sandbox Code Playgroud)

我不确定我是否理解错误,并且在线搜索解决方案并没有太大成功.我们将非常感谢您提供的任何帮助.

如果有帮助,整个项目的代码都在GitHub上.

python for-loop nested-lists

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

Python numpy随机数概率

Python 3.6.1 :: Anaconda custom (64-bit)

import numpy as np
import matplotlib.pyplot as plt
import matplotlib as mtptlb

print (np.__version__)
1.12.1
print (mtptlb.__version__)
2.0.2

%matplotlib inline
a=np.random.uniform(1,100,1000000)
b=range(1,101)
plt.hist(a)
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

为什么Y轴显示100000?np.random.uniform(1100,百万)具有值百万,因此不应该它显示在y轴上百万?

python random numpy matplotlib python-3.x

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

计数器变量作为Python中for循环的步长值

在Java中,我们可以在其标题本身内更改for循环的计数器变量.见下文:

for(int i=1; i<1024; i*=2){
    System.out.println(i);
}
Run Code Online (Sandbox Code Playgroud)

我知道以下代码是错误的.但有没有一种方法可以在不改变i循环内部值的情况下编写.我喜欢让我的for循环简单而简短:-)

for i in range(1, 1024, i*=2):        
    print(i)
Run Code Online (Sandbox Code Playgroud)

python loops python-3.x

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

python copy.deepcopy 列表看起来很浅

我正在尝试初始化表示 3x3 数组的列表列表:

import copy
m = copy.deepcopy(3*[3*[0]])
print(m)
m[1][2] = 100
print(m)
Run Code Online (Sandbox Code Playgroud)

输出是:

[[0, 0, 0], [0, 0, 0], [0, 0, 0]]
[[0, 0, 100], [0, 0, 100], [0, 0, 100]]
Run Code Online (Sandbox Code Playgroud)

这不是我所期望的,因为每行的最后一个元素是共享的!我确实通过使用得到了我需要的结果:

m = [ copy.deepcopy(3*[0]) for i in range(3) ]
Run Code Online (Sandbox Code Playgroud)

但我不明白为什么第一个(和更简单的)形式不起作用。不是deepcopy应该很深吗?

python deep-copy python-3.x

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

列表中的连续零数

我有一个由1和0组成的列表,例如

[0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 1, 0]
Run Code Online (Sandbox Code Playgroud)

我想输出另一个相同长度的列表,其中每个条目代表刚刚消失的连续0的数量,即上面示例的输出将是:

[0, 1, 2, 3, 4, 0, 0, 0, 0, 0, 1, 0]
Run Code Online (Sandbox Code Playgroud)

请注意,输出列表的第一个条目将始终是,0并且输入列表的最后一个条目是什么并不重要.

到目前为止我尝试过的:

def zero_consecutive(input_list):
    output = [0]
    cons = 0
    for i in input_list[:-1]:
        if i == 0:
            cons += 1
            output.append(cons)
        else:
            cons = 0
            output.append(cons)

    return output
Run Code Online (Sandbox Code Playgroud)

它适用于该示例,但可能有更有效的方法来涵盖更多边缘情况.

python numpy list

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