所以我有这些条件:
A = 0到10 或 40到60
B = 20到50
我有这个代码:
area1 = N.where((A>0) & (A<10)),1,0)
area2 = N.where((B>20) & (B<50)),1,0)
Run Code Online (Sandbox Code Playgroud)
我的问题是:如何在numpy中做' OR '条件?
这是在Python中格式化字符串的两种非常流行的方法.一个是使用dict:
>>> 'I will be %(years)i on %(month)s %(day)i' % {'years': 21, 'month': 'January', 'day': 23}
'I will be 21 on January 23'
Run Code Online (Sandbox Code Playgroud)
而另一个使用简单tuple:
>>> 'I will be %i on %s %i' % (21, 'January', 23)
'I will be 21 on January 23'
Run Code Online (Sandbox Code Playgroud)
第一个是更具可读性,但第二个更快写.我实际上模糊地使用它们.
每个人的利弊是什么?关于性能,可读性,代码优化(其中一个转换为另一个?)以及您认为有用的任何其他内容.
使用numpy,我有一个函数的定义:
def powellBadlyScaled(X):
f1 = 10**4 * X[0] * X[1] - 1
f2 = numpy.exp(-numpy.float(X[0])) + numpy.exp(-numpy.float(X[1])) - 1.0001
return f1 + f2
Run Code Online (Sandbox Code Playgroud)
在优化例程中,此函数被评估了很多次.它经常引发异常:
RuntimeWarning: overflow encountered in exp
Run Code Online (Sandbox Code Playgroud)
我知道操作数不能存储在float的已分配空间中.但是我怎样才能克服这个问题呢?
我希望有人可以回答这个对Python有深刻理解的:)
请考虑以下代码:
>>> class A(object):
... pass
...
>>> def __repr__(self):
... return "A"
...
>>> from types import MethodType
>>> a = A()
>>> a
<__main__.A object at 0x00AC6990>
>>> repr(a)
'<__main__.A object at 0x00AC6990>'
>>> setattr(a, "__repr__", MethodType(__repr__, a, a.__class__))
>>> a
<__main__.A object at 0x00AC6990>
>>> repr(a)
'<__main__.A object at 0x00AC6990>'
>>>
Run Code Online (Sandbox Code Playgroud)
注意repr(a)如何不产生"A"的预期结果?我想知道为什么会这样,如果有办法实现这个目标......
我对比一下,下面的例子可行(也许是因为我们没有尝试覆盖特殊方法?):
>>> class A(object):
... def foo(self):
... return "foo"
...
>>> def bar(self):
... return "bar"
...
>>> from types import …Run Code Online (Sandbox Code Playgroud) 每当我尝试使用Python的exponentiation和logarithms模块的任何内置函数时,我都会收到如下错误:
NameError: name 'sqrt' is not defined
Run Code Online (Sandbox Code Playgroud)
我已经尝试使用math.sqrt(4),sqrt(4)和sqrt(4.0),但他们没有工作.例外情况是pow,它应该按预期工作.这真的很奇怪,我不确定是什么问题.
我在Postgres 9.2中创建了两个组角色:一个被调用admins,另一个被调用readers.
这个想法很简单:admins创建表并readers具有对这些表的读访问权.
在为两个组角色授予权限后,所有内容都按预期为exisintg对象工作.但是现在新物体怎么样?
所以在阅读这篇文章之后,我改变了默认SELECT权限,readers为任何admins创建的新表授予权限:
ALTER DEFAULT PRIVILEGES FOR ROLE admins IN SCHEMA public GRANT SELECT ON TABLES TO readers;
ALTER DEFAULT PRIVILEGES FOR ROLE admins IN SCHEMA public GRANT SELECT ON SEQUENCES TO readers;
Run Code Online (Sandbox Code Playgroud)
但显然,ALTER DEFAULT PRIVILEGES只影响角色本身而不影响角色的成员.让我演示给你看.
如果我以userX(成员admins)身份登录并创建新表,则不会授予默认权限(因此readers无法访问此表):
test=# CREATE TABLE table1 (name VARCHAR(10)); -- Creating table as userX
test=# \dp table1
Access …Run Code Online (Sandbox Code Playgroud) author = models.ForeignKey(User)
Run Code Online (Sandbox Code Playgroud)
有没有什么办法可以设置这个字段的默认值来自动选择登录用户?我知道你可以在save方法中执行此操作但我的客户端已经请求它在编辑时自动默认为登录用户以避免混淆.
本文将介绍如何在保存期间更新它,而不是在编辑时.
我正在实现一个需要序列化和反序列化大对象的程序,所以我正在进行一些测试pickle,cPickle并marshal选择模块来选择最佳模块.一路上我发现了一些非常有趣的东西:
我正在使用dumps然后loads(对于每个模块)列表中的dicts,元组,整数,浮点数和字符串.
这是我的基准测试的输出:
DUMPING a list of length 7340032
----------------------------------------------------------------------
pickle => 14.675 seconds
length of pickle serialized string: 31457430
cPickle => 2.619 seconds
length of cPickle serialized string: 31457457
marshal => 0.991 seconds
length of marshal serialized string: 117440540
LOADING a list of length: 7340032
----------------------------------------------------------------------
pickle => 13.768 seconds
(same length?) 7340032 == 7340032
cPickle => 2.038 seconds
(same length?) 7340032 == 7340032
marshal => 6.378 seconds
(same …Run Code Online (Sandbox Code Playgroud) 我在页面上有一些循环,需要依赖于循环编号的列表项.
我打电话的时候:
{{ mylist.1 }}
{{ mylist.2 }}
{{ mylist.3 }}
Run Code Online (Sandbox Code Playgroud)
一切正常,但我真正需要的是:
{% for x in somenumber|MyCustomRangeTag %}
{{ mylist.x }}
{% endfor %}
Run Code Online (Sandbox Code Playgroud)
MyCustomRangeTag给了我Python range()它的工作原理,我已经有了x数字.因此x,取决于循环次数,是1,2,3等.这可能吗?怎么样?
我有一个std :: map mymap
现在,如果我在地图中插入值,如:
std::map <string, string> mymap;
mymap["first"] = "hi";
mymap["third"] = "how r you";
mymap["second"] = "hello";
Run Code Online (Sandbox Code Playgroud)
现在我想迭代地图并以排序(键)方式打印值:
map<string, string>::iterator itr;
for(itr = mymap.begin(); itr != mymap.end(); itr++)
{
string newline = itr->second;
cout << newline << endl;
}
Run Code Online (Sandbox Code Playgroud)
输出应该是:
hi
hello
how r you
Run Code Online (Sandbox Code Playgroud)
我认为默认情况下,地图存储按排序键方式存储,但我在输出中得到的输入与输入相同.我需要为此提供我的排序功能,还是需要在迭代地图之前做一些额外的事情?
python ×6
django ×2
numpy ×2
c++ ×1
django-admin ×1
exp ×1
import ×1
logarithm ×1
math ×1
module ×1
overflow ×1
performance ×1
postgresql ×1
privileges ×1
roles ×1
stl ×1