小编Jea*_*bre的帖子

TypeError:bar()为关键字参数“ height”获得了多个值

我试图使用python重新创建我的excel图表之一,但现在不断撞墙:

这是我尝试过的代码:

import matplotlib.pyplot as plt
from numpy import arange

myfile = open(r'C:\Users\user\Desktop\Work In Prog\Alpha Data.csv', 'r')

label = [] # this is a string of the label
data = []  #this is some integer, some are the same value

for lines in myfile:

    x = lines.split(',')
    label.append(x[1])
    data.append(x[4])

dataMin = float(min(data))
dataMax = float(max(data))

pos = arange(dataMin, dataMax, 1)

p1 = plt.bar(pos, data, color='red', height=1)

plt.show()
Run Code Online (Sandbox Code Playgroud)

python bar-chart python-2.7

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

在元组列表上使用二等分,但仅使用第一个值进行比较

我阅读有关如何bisect在元组列表上使用的问题,并使用该信息来回答该问题。它有效,但我想要一个更通用的解决方案。

由于bisect不允许指定key函数,如果我有这个:

import bisect
test_array = [(1,2),(3,4),(5,6),(5,7000),(7,8),(9,10)]
Run Code Online (Sandbox Code Playgroud)

我想找到x > 5这些(x,y)元组的第一个项目(根本不考虑y,我目前正在这样做:

bisect.bisect_left(test_array,(5,10000))
Run Code Online (Sandbox Code Playgroud)

我得到了正确的结果,因为我知道noy大于 10000,所以将bisect我指向(7,8). 如果我1000换了,那就错了。

对于整数,我可以做

bisect.bisect_left(test_array,(5+1,))
Run Code Online (Sandbox Code Playgroud)

但在可能有浮点数的一般情况下,如何在不知道第二个元素的最大值的情况下做到这一点?

test_array = [(1,2),(3,4),(5.2,6),(5.2,7000),(5.3,8),(9,10)]
Run Code Online (Sandbox Code Playgroud)

我试过这个:

bisect.bisect_left(test_array,(min_value+sys.float_info.epsilon,))
Run Code Online (Sandbox Code Playgroud)

它没有用,但我试过这个:

bisect.bisect_left(test_array,(min_value+sys.float_info.epsilon*3,))
Run Code Online (Sandbox Code Playgroud)

它奏效了。但这感觉就像一个糟糕的黑客。任何干净的解决方案?

python comparison tuples bisect

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

如何移动'list'的'index'方法的偏移量

我知道索引函数的工作方式如下:

list = ['dog','cat','pizza','trump', 'computer', 'trump']
print list.index('trump')
Run Code Online (Sandbox Code Playgroud)

输出将是3.但现在我希望他打印另一个'特朗普'字符串,它来自2个对象.但如果我会做同样的命令:

print list.index('trump')
Run Code Online (Sandbox Code Playgroud)

他将再次打印3 - 他看到的第一个特朗普.那么如何移动索引函数的'offset',所以她会在索引5中检测到另一个特朗普?非常感谢你们!

python list offset

5
推荐指数
3
解决办法
1345
查看次数

使用单个命令加载多个 R 包

可以使用以下命令使用 package中的Rfunction 函数加载多个包:p_loadpacman R

pacman::p_load("ggplot2", "lme4")
Run Code Online (Sandbox Code Playgroud)

但是,我想使用这样的命令

Packages <- c("ggplot2", "lme4")
pacman::p_load(Packages)
Run Code Online (Sandbox Code Playgroud)

这是行不通的。想知道如何实现这一点?

r package pacman-package-manager

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

Python - Jupyter 无法识别 Unix 命令

我已经为课程安装了 Git Bash、python 3.6 和 Anaconda,这要求我在 Jupyter 中使用 Unix 命令,例如 !ls、!cat、!head 等。但是,对于这些命令中的每一个,我得到(例如):

'ls' 不是内部或外部命令,也不是可运行的程序或批处理文件。

我使用的是 Windows 10。我该怎么做才能继续学习课程?谢谢!

python windows git jupyter

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

当递归变得非常深时,理解中的递归调用有什么特别之处?

我注意到当我在列表理解中使用递归时会发生一些奇怪的事情.如果递归过深,解释器似乎空闲(我等了5分钟,什么都没发生).

为了这个问题,假设我想要展平嵌套列表(我没有 - 但它是一个简短的代码示例,说明了我遇到的问题):

def flatten(x):
    if isinstance(x, list):
        return [a for i in x for a in flatten(i)]
    else:
        return [x]
Run Code Online (Sandbox Code Playgroud)

使用辅助函数创建嵌套列表:

def wrap_in_lists(value, depth):
    a = value
    for _ in range(depth):
        a = [a]
    return a
Run Code Online (Sandbox Code Playgroud)

使用时效果很好:

>>> flatten(wrap_in_lists(1, 2**10))
[1]
Run Code Online (Sandbox Code Playgroud)

但是当我使用时它完全停止:

>>> flatten(wrap_in_lists(1, 2**11))
# Nothing happens, no exception, no result, no segfault, ...
Run Code Online (Sandbox Code Playgroud)

我的问题是:这里发生了什么?为什么根本没有回应?


奇怪的是,使用生成器的类似方法不会显示此行为:

def flatten(l):
    def inner(x):
        for item in x:
            if isinstance(item, list):
                yield from inner(item)
            else:
                yield item
    return list(inner(l))

>>> flatten(wrap_in_lists(1, …
Run Code Online (Sandbox Code Playgroud)

python recursion list-comprehension jupyter

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

itertools.cycle(iterable) vs while True

我最近被要求做这个任务(学校):

编写一个循环生成器,它以有限迭代器为参数,并在无限循环中生成可迭代器

所以我做了 :

import itertools
def loop(l):
    for eleme?????nt in itertools.cycle(l):
        yield element
Run Code Online (Sandbox Code Playgroud)

我的一位同学做了:

def loop(l):
    while True:
??         for element in l:
            yield element
Run Code Online (Sandbox Code Playgroud)

我想知道两者之间的主要区别是什么,以及是否有一种更“pythonic”的方式来编写像这样简单的东西。

python loops python-itertools python-3.x

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

为什么 Python 3 换行符 \n 不适用于打印和子进程 Popen 标准输出?

Python 3.7.1:grep使用 subprocess.Popen调用以从日志文件中提取错误。打印到屏幕时,不处理换行符 \n。

例子

a = subprocess.Popen(["grep", "ERR", "errors.log"], stdout=subprocess.PIPE)
print(a.stdout.read())
Run Code Online (Sandbox Code Playgroud)

输出

ERR 1 ret: 31113\nERR 2 ret: 35523\nERR 3 ret: 3810 (etc.)
Run Code Online (Sandbox Code Playgroud)

无法想象为什么不处理换行符。我希望这样:

ERR 1 ret: 31113
ERR 2 ret: 35523
ERR 3 ret: 3810
(etc.)
Run Code Online (Sandbox Code Playgroud)

一直在梳理“网络”以获得答案,但没有运气。谢谢:^)

参考:

我如何在 Python 中指定一个新行?
Python Popen grep

printing grep line-breaks carriage-return python-3.x

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

Redis在LUA脚本中支持任意精度

我需要能够在Redis中进行以下操作:

  • 当且仅当结果> 0时,才减小n值
  • 否则,什么都不做
  • 处理任意精度的十进制数字(我需要使用浮点格式)
  • 可供其他进程访问

简而言之,这是一个“平衡”:如果我在此字段中有足够的空间,则可以使用它,否则,不可以。有时候,它必须减少很多余额

为此,我制作了一个LUA脚本来计算减量的结果,然后使用该结果修改字段。我选择此解决方案是因为:

我面临的问题:

  • 使用的lib不适合:它仅适用于整数,并且每次发送都太大(使用evalsha的事件,速度很慢)
  • 在Redis =>中编程Lua脚本时如何包含第三方库 =>接下来,我对在Redis上使用附加模块非常困惑。但是,这是从过去到现在。现在怎么样?
  • 我不确定是否有更有效的方法来做到这一点?欢迎提供有关代码本身的任何建议
  • Redis真的可以满足我的需求吗?

输入“值”的格式如下:Array <{键:字符串,字段:字符串,值:字符串// //实际上是一个BigNumber,具有字符串格式}>

this.redisClient.eval(`
    ${luaBigNumbers}

    local operations = cjson.decode(KEYS[1])
    local isStillValid = true
    local test

    for k, v in pairs(operations) do
      local temp = BigNum.new(redis.call('hget', v.key, v.field))
      local res = BigNum.mt.add(temp, BigNum.new(v.value))

      if BigNum.mt.lt(res, BigNum.new('0')) then
        isStillValid = false
      end
    end

    if isStillValid then
      for k, v in pairs(operations) do
        local temp = BigNum.new(redis.call('hget',v.key, v.field))
        redis.call('hset', v.key, v.field, …
Run Code Online (Sandbox Code Playgroud)

lua arbitrary-precision redis

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

Python 3.7.4:'re.error: 位置 0 处的错误转义 \s'

我的程序看起来像这样:

import re
# Escape the string, in case it happens to have re metacharacters
my_str = "The quick brown fox jumped"
escaped_str = re.escape(my_str)
# "The\\ quick\\ brown\\ fox\\ jumped"
# Replace escaped space patterns with a generic white space pattern
spaced_pattern = re.sub(r"\\\s+", r"\s+", escaped_str)
# Raises error
Run Code Online (Sandbox Code Playgroud)

错误是这样的:

Traceback (most recent call last):
  File "<input>", line 1, in <module>
  File "/home/swfarnsworth/programs/pycharm-2019.2/helpers/pydev/_pydev_bundle/pydev_umd.py", line 197, in runfile
    pydev_imports.execfile(filename, global_vars, local_vars)  # execute the script
  File "/home/swfarnsworth/programs/pycharm-2019.2/helpers/pydev/_pydev_imps/_pydev_execfile.py", line 18, in …
Run Code Online (Sandbox Code Playgroud)

python regex regexp-replace python-3.7

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