假设我想从我的Api网关端点向我的Lambda函数发出GET请求时,在URL字符串中传递val1和val2:
https://xyz.execute-api.amazonaws.com/prod/test?val1=5&val2=10
Run Code Online (Sandbox Code Playgroud)
我有一个简单的函数,它将两个输入val1和val2相加:
def lambda_handler(event, context):
# How do I get at val1 and val2??
return {'result': val1 + val2}
Run Code Online (Sandbox Code Playgroud)
我已经在AWS API网关上的方法请求中为URL查询字符串参数添加了val1和val2.但是如何在函数内部访问它们呢?
而不是通过名称显式访问所有参数,有没有办法从函数内以编程方式获取函数参数列表?
所以对于这个函数签名:
Function doSomething(Arg1 as String, Arg2 as Range, Optional Arg3 as String):
Run Code Online (Sandbox Code Playgroud)
理想情况下,是否存在包含参数名称及其元数据(类型,可选,默认值等)的对象?例如,Me.Arguments此函数中的代码将生成如下字典:
{
"Arg1": {
"Type": String,
"Optional": False,
"Default": Nothing
},
"Arg2": {
"Type": Range,
"Optional": False,
"Default": Nothing
},
"Arg1": {
"Type": String,
"Optional": True,
"Default": Nothing
}
}
Run Code Online (Sandbox Code Playgroud)
谢谢.
我有这个数组:
arr = np.array([3, 7, 4])
Run Code Online (Sandbox Code Playgroud)
这些布尔索引:
cond = np.array([False, True, True])
Run Code Online (Sandbox Code Playgroud)
我想在布尔条件为真的数组中找到最大值的索引.所以我这样做:
np.ma.array(arr, mask=~cond).argmax()
Run Code Online (Sandbox Code Playgroud)
哪个工作并返回1.但如果我有一个布尔索引数组:
cond = np.array([[False, True, True], [True, False, True]])
Run Code Online (Sandbox Code Playgroud)
是否有一个矢量化/ numpy方式迭代布尔索引数组返回[1,2]?
假设我有以下命令:
In [6]: scope
Out[6]: {'bar': <function bar>, 'foo': <function foo>}
Run Code Online (Sandbox Code Playgroud)
并且foo和bar是:
def foo():
return 5
def bar(x):
return foo() + x
Run Code Online (Sandbox Code Playgroud)
我想跑bar(1),但还需要找到foo()。bar()有没有办法在名称空间中运行scope以便找到foo()?
我不确切知道需要哪个函数,所以我需要一个在命名空间中scope bar运行的通用方法。我没有源代码,也无法修改任何一个函数来接受字典。barscope
看起来函数有一个__closure__属性,但它是不可变的。还有一个__globals__属性,但它仅指向globals(). 我已经看到了有关该更新的一些答案,locals()但我想保持locals()不变。
我尝试了evalin scope,但得到了NameErrorfor foo:
In [12]: eval(scope['bar'](1), scope)
---------------------------------------------------------------------------
NameError Traceback (most recent call last)
<ipython-input-12-f6305634f1da> in <module>()
----> 1 …Run Code Online (Sandbox Code Playgroud) 在下面的例子中,我想不包括周末和绘制Y为直线,并指定一些自定义的频率主要刻度标记,因为他们将是一个"破"时间序列(例如,每周一,一拉matplotlib的set_major_locator).
我怎么会在Altair那样做?
import altair as alt
import pandas as pd
index = pd.date_range('2018-01-01', '2018-01-31', freq='B')
df = pd.DataFrame(pd.np.arange(len(index)), index=index, columns=['Y'])
alt.Chart(df.reset_index()).mark_line().encode(
x='index',
y='Y'
)
Run Code Online (Sandbox Code Playgroud)
我想按表上多对多关系的计数进行排序。
我的出发点是对该主题的(优秀)回应。然而,就我而言,涉及第三个表,我需要我的反向引用是“连接”而不是“动态”。
当我尝试解决该问题时,这两个更改的组合会导致编程错误。
这是我的设置。我在用户和帖子之间有相同的多对多关系。我的帖子和标题之间也有一对多的关系。我想要的是按喜欢每个帖子的用户数量排序的所有帖子的列表。
from flask import Flask
from flask.ext.sqlalchemy import SQLAlchemy
from sqlalchemy.orm import relationship, backref
from sqlalchemy import func
app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'postgres://xxx'
db = SQLAlchemy(app)
likes = db.Table('likes',
db.Column('user_id', db.Integer, db.ForeignKey('user.id')),
db.Column('post_id', db.Integer, db.ForeignKey('post.id')))
class User(db.Model):
id = db.Column(db.Integer, primary_key=True)
username = db.Column(db.String(20))
def __repr__(self):
return "<User('%s')>" % self.username
class Post(db.Model):
id = db.Column(db.Integer, primary_key=True)
title = db.Column(db.String(255))
likes = db.relationship('User', secondary=likes,
backref=db.backref('posts', lazy='joined'))
def __repr__(self):
return "<Post('%s')>" % self.title
class Heading(db.Model):
id = …Run Code Online (Sandbox Code Playgroud) 有没有办法检查源代码(或编译的代码对象)并告诉在Python 3.3中导入哪些模块?
例如,在:
import foo
def func():
from bar import *
return 42
Run Code Online (Sandbox Code Playgroud)
我想能够告诉模块foo和bar正在导入.我希望避免使用正则表达式或模式匹配.
我安装了64位Python(2.7.5)C:\Python27和32位Python C:\Python27_32.
我想使用virtualenv来设置一个32位的虚拟环境,当我需要使用32位Python时,我可以切换到这个环境.一旦设置了该环境,我计划编辑该bin\activate文件以更改所有必需的路径以指向32位目录.
但是,当我尝试创建虚拟环境时,我收到以下错误:
> virtualenv --python=C:\Python27_32\python.exe foo
Running virtualenv with interpreter C:\Python27_32\python.exe
PYTHONHOME is set. You *must* activate the virtualenv before using it
New python executable in foo\Scripts\python.exe
Installing setuptools...............
Complete output from command C:\Users\<user>\Drop...o\Scripts\python.exe -c "#!python
\"\"\"Bootstra...sys.argv[1:])
" C:\Python27\lib\site...ols-0.6c11-py2.7.egg:
Traceback (most recent call last):
File "<string>", line 278, in <module>
File "<string>", line 238, in main
File "build/bdist.linux-i686/egg/setuptools/command/easy_install.py", line 21, in <module>
File "build/bdist.linux-i686/egg/setuptools/package_index.py", line 2, in <module>
File "C:\Python27\Lib\urllib2.py", line 94, in …Run Code Online (Sandbox Code Playgroud) 我需要序列化DataFrames并通过网络发送它们.出于安全考虑,我不能使用泡菜.
下一个最快的方法是什么?我在v0.13中对msgpacks感兴趣,但除非我做错了什么,性能似乎比pickle差得多.
In [107]: from pandas.io.packers import pack
In [108]: df = pd.DataFrame(np.random.rand(1000, 100))
In [109]: %timeit buf = pack(df)
100 loops, best of 3: 15.5 ms per loop
In [110]: import pickle
In [111]: %timeit buf = pickle.dumps(df)
1000 loops, best of 3: 241 µs per loop
Run Code Online (Sandbox Code Playgroud)
到目前为止,我发现的最好的方法是使用array.tostring()序列化同源numpy数组(df.as_blocks()很方便)并从中重建DataFrame.性能与泡菜相当.
但是,使用这种方法,我被迫将dtype = object的列(即,至少包含字符串的任何内容)转换为完全字符串,因为Numpy的fromstring()无法反序列化dtype = object.Pickle设法保留对象列中的混合类型(它似乎包括pickle输出中的一些函数).
python ×8
numpy ×2
python-3.x ×2
altair ×1
aws-lambda ×1
excel ×1
excel-vba ×1
keras ×1
pandas ×1
pickle ×1
sqlalchemy ×1
theano ×1
vba ×1
virtualenv ×1