假设我有一个Python函数,它接受几个参数作为输入并返回一个输出.
现在我希望有一个基于此功能的"Web服务"(API).这意味着应该有一个可以使用一些参数调用的URL,这个参数应该传递给函数,函数接受它们并计算相应的结果(输出)并将其传递回Web服务器,在其中转,向用户显示结果(可能是另一个程序).
如果一个简单的函数接受两个实值参数(例如x和y)并返回一个实值结果,则可以组织函数调用throw get参数.例如:
www.my_web_site.org/my_func_name?x=1.234&y=3.456
Run Code Online (Sandbox Code Playgroud)
因此,我希望网页只包含一个实数.
但是,对于我来说,对于更复杂的输入我应该做些什么并不是那么明显.假设作为一些参数的值,我们可以有列表和字典.我应该如何在URL中对它们进行编码.我可以想象这样的事情:
www.my_web_site.org/my_func_name?x=[1,2,3,4]&y={1:'a',2:'b'}
Run Code Online (Sandbox Code Playgroud)
但是,我不确定这是一个优雅的解决方案.有没有标准怎么做?也许我应该使用XML或JSON来编码输入.
同样的问题适用于输出.假设我们可以将字典或列表或甚至集合作为输出.我应该如何表达它.我应该使用str(output)还是有其他"标准"解决方案?
我想要一个函数,它生成一组(或一个列表)所有可能的元组,具有给定的长度和元素的总和。元组的元素不应该是负整数。
例如对于以下输入
get_tuple(length=3, total=2)
Run Code Online (Sandbox Code Playgroud)
我想得到以下输出:
[(1, 0, 1), (2, 0, 0), (1, 1, 0), (0, 0, 2), (0, 1, 1), (0, 2, 0)]
Run Code Online (Sandbox Code Playgroud)
Python 中的标准库可以做到这一点吗?如果没有,如何编写一个可以做到的函数?
我有一个多维的numpy数组,我想把它的一些元素构造成一维数组.我需要采取的元素由它们的索引给出,例如:
inds = [(0,0), (0,1), (1,1), (1,0), (0,2)]
Run Code Online (Sandbox Code Playgroud)
我以一种简单的方式解决它:
ls = []
for i, j in inds:
ls += [a[i,j]]
Run Code Online (Sandbox Code Playgroud)
它给出了期望的结果.但是,我意识到这个解决方案对我来说太慢了.是否有可能以更有效的方式做同样的事情?
我有一个以 3D numpy 数组形式给出的图像(宽度、高度和颜色作为尺寸)。现在我想提取给定形状的所有可能的子图像。例如,原始图像的宽度和高度分别为300和200像素,我想提取宽度和高度分别等于10和20像素的所有子图像。此外,我希望将每个子图像作为一维数组(为此我需要指定特定的像素顺序)。
我通过以下方式解决问题:
for col0 in range(w_max - max_shift):
x3s_new = [x + col0 for x in x3s]
for row0 in range(h_max - max_shift):
vec_1 = []
for col_shift, row_shift in px_inds:
col = col0 + col_shift
row = row0 + row_shift
vec_1 += [ia[row, col, 0], ia[row, col, 1], ia[row, col, 2]]
y3s_new = [y + row0 for y in y3s]
vec_2 = list(ia[y3s_new, x3s_new, z3s])
Run Code Online (Sandbox Code Playgroud)
在上面的代码中,我对表示图像的“矩阵”的列和行进行了循环。然后,我将每个像素(由其列和行给出)视为子图像的左上角并提取子图像。
和是以一维数组vec_1(vec_2列表)形式给出的所需子图像。它们是相同的,我只是想测试哪种方法更快。令人惊讶的是,生成的时间vec_2比vec_1. 然而,根据我对问题的 …
我有一个 JSON 对象。例如:
js = {'a':'b', 'c':[10, 20], 'd':{'f':'k', 'l':'m'}}
Run Code Online (Sandbox Code Playgroud)
现在,我想使用networkx库来显示可视化此 JSON 的图表。更详细地说,对于给定的示例,我希望有一个指向a、c和d节点的“根”节点。然后a节点应该指向b 节点,c节点应该指向10和20,d节点应该指向f和l节点,最后f和l节点应该分别指向k和m节点。所以,我想执行以下操作:
G=nx.Graph()
G.dad_nodes_from(['a', 'c', 'd', 'b', 10, 20, 'f', 'l', 'k', 'm'])
G.add_edge('a','b')
G.add_edge('c',10)
G.add_edge('c',20)
G.add_edge('d','f')
G.add_edge('d','l')
G.add_edge('f','k')
G.add_edge('l','m')
Run Code Online (Sandbox Code Playgroud)
我可以手动完成,但是如何自动完成呢?
添加:d部分问题来自于可能引用不同对象的事实。因此,d因为一个字典中的键与另一字典中的键不是同一节点d。
我刚安装了pypng库sudo -E pip install pypng.我执行时会在列表中看到这个库pip list(我看到的版本0.0.18).
当我启动python(或ipython)会话并执行时
import pypng
Run Code Online (Sandbox Code Playgroud)
我明白了
ImportError: No module named pypng
Run Code Online (Sandbox Code Playgroud) 要使用 pyspark 按 Spark 数据帧进行分组,我使用如下命令:
df2 = df.groupBy('_c1','_c3').agg({'_c4':'max', '_c2' : 'avg'})
Run Code Online (Sandbox Code Playgroud)
结果我得到这样的输出:
+-----------------+-------------+------------------+--------+
| _c1| _c3| avg(_c2)|max(_c4)|
+-----------------+-------------+------------------+--------+
| Local-gov| HS-grad| 644952.5714285715| 9|
| Local-gov| Assoc-acdm|365081.64285714284| 12|
| Never-worked| Some-college| 462294.0| 10|
| Local-gov| Bachelors| 398296.35| 13|
| Federal-gov| HS-grad| 493293.0| 9|
| Private| 12th| 632520.5454545454| 8|
| State-gov| Assoc-voc| 412814.0| 11|
| ?| HS-grad| 545870.9230769231| 9|
| Private| Prof-school|340322.89130434784| 15|
+-----------------+-------------+------------------+--------+
Run Code Online (Sandbox Code Playgroud)
这很好,但有两件事我想念:
avg_c2列avg(_c2)。我想以不同的方式聚合同一列。例如,我可能想知道 column 的最小值和最大值_c4。我尝试了以下方法,但它不起作用:
df2 = df.groupBy('_c1','_c3').agg({'_c4':('min','max'), '_c2' : 'avg'})
有办法实现我所需要的吗?
以下命令有什么作用:
git fetch <remote> <branch> && git checkout FETCH_HEAD
Run Code Online (Sandbox Code Playgroud)
我只有一个本地分支 ( master) 并且我执行上述命令。我应该期待我的本地存储库发生哪些变化,我该如何验证(查看)它们?
我在两个不同的系统上使用来自 numpy 的按位运算并得到不同/不一致的结果。经过一番调查,我发现left_shift导致问题的原因。如果我执行以下操作:
xs = [i for i in range(100)]
np.left_shift(xs, xs)
Run Code Online (Sandbox Code Playgroud)
在第一个系统上,我得到:
array([ 0, 2, 8,
24, 64, 160,
384, 896, 2048,
4608, 10240, 22528,
49152, 106496, 229376,
491520, 1048576, 2228224,
4718592, 9961472, 20971520,
44040192, 92274688, 192937984,
402653184, 838860800, 1744830464,
3623878656, 7516192768, 15569256448,
32212254720, 66571993088, 137438953472,
283467841536, 584115552256, 1202590842880,
2473901162496, 5085241278464, 10445360463872,
21440476741632, 43980465111040, 90159953477632,
184717953466368, 378231999954944, 774056185954304,
1583296743997440, 3236962232172544, 6614661952700416,
13510798882111488, 27584547717644288, 56294995342131200,
114841790497947648, 234187180623265792, 477381560501272576,
972777519512027136, 1981583836043018240, 4035225266123964416,
8214565720323784704, -1729382256910270464, -2882303761517117440,
-4611686018427387904, -6917529027641081856, -9223372036854775808,
-9223372036854775808, …Run Code Online (Sandbox Code Playgroud) 我尝试通过键入以下命令来安装Python模块:sudo python setup.py install输入此命令之后,我在屏幕上输出了很多内容.至少有几行如下:
writing manifest file 'scikits.audiolab.egg-info/SOURCES.txt'
removing '/usr/lib/python2.5/site-packages/scikits.audiolab-0.10.2-py2.5.egg-info' (and everything under it)
Copying scikits.audiolab.egg-info to /usr/lib/python2.5/site-packages/scikits.audiolab-0.10.2-py2.5.egg-info
Installing /usr/lib/python2.5/site-packages/scikits.audiolab-0.10.2-py2.5-nspkg.pth
running install_scripts
Run Code Online (Sandbox Code Playgroud)
所以,没有什么可疑的.但是当我尝试使用Python中的模块时:
import pyaudiolab
Run Code Online (Sandbox Code Playgroud)
我看到Python没有找到模块:
Traceback (most recent call last):
File "test.py", line 1, in <module>
import pyaudiolab ImportError: No module named pyaudiolab
Run Code Online (Sandbox Code Playgroud)
怎么才能发现出了什么问题?作为安装的结果,我得到一个新目录:/usr/lib/python2.5/site-packages(所以发生了一些事情),但我仍然无法使用该模块.任何人都可以帮助我吗?