我想比较我创建新列的两列的值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列表中的所有值,但从特定索引开始?
例如:
li = ['a', 'b', 'c', 'd']
Run Code Online (Sandbox Code Playgroud)
在索引1处开始循环并打印出结果.我的预期输出是:
['b', 'c', 'd', 'a']
Run Code Online (Sandbox Code Playgroud)
我知道使用两个"for循环"可以完成这项工作但有没有更好的方法来做到这一点?
表达问题相当简单,但我不能 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) 我正在尝试在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) 我担心的是:
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?
我已经构建了一个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)
我不确定我是否理解错误,并且在线搜索解决方案并没有太大成功.我们将非常感谢您提供的任何帮助.
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轴上百万?
在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) 我正在尝试初始化表示 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应该很深吗?
我有一个由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 ×10
python-3.x ×5
list ×3
for-loop ×2
matplotlib ×2
numpy ×2
dataframe ×1
deep-copy ×1
indexing ×1
iteration ×1
loops ×1
memory ×1
nested-lists ×1
pandas ×1
python-2.7 ×1
random ×1
tkinter ×1