是否有快速的方法来做到这一点;
var x;
function y() {
// The value is not bound until y is called.
x = function(z) {
console.log(z);
}
}
y();
x('hello');
其中function Y() {
var x = function(z) {
console.log(z);
}
return {
x: x
};
}
var y = Y();
y.x('hello');
是我想要的功能,结果应该是Song::whereHas('writers', function($query){
$query->whereNull('writerField');
}, '=', 0);
,即包含每个输入数组总和的import numpy as np
a=np.array([1,2,3,4])
b=np.array([1,2])
c=np.array([a,b])
result=magic(c)
。
答案 0 :(得分:2)
以下是建议(答案和评论)及其时间的汇编:
import numpy as np
c = np.array([np.random.rand(np.random.randint(1, 300)) for i in range(50)])
def oliver(arr):
res = np.empty_like(arr)
for enu, subarr in enumerate(arr):
res[enu] = np.sum(subarr)
return res
def reut(arr):
return np.array([a.sum() for a in arr])
def hpaulj(arr):
d = np.concatenate(arr)
l = map(len, arr)
i = np.cumsum(l) - l
return np.add.reduceat(d, i)
他们的时代:
In [94]: timeit oliver(c)
1000 loops, best of 3: 457 µs per loop
In [95]: timeit reut(c)
1000 loops, best of 3: 317 µs per loop
In [96]: timeit hpaulj(c)
10000 loops, best of 3: 94.4 µs per loop
实施@ hpaulj有点棘手,但我认为我得到了它(如果你使用concatenate
而不是hstack
,这是最快的)
答案 1 :(得分:1)
在许多可能的解决方案中,这是一个:
def your_magic(arr):
res = np.empty_like(arr)
for enu, subarr in enumerate(arr):
res[enu] = np.sum(subarr)
return res
请记住,制作一个不等长的数组的numpy数组根本不高效,并且与在普通Python列表中添加数组非常相似。这就是上面函数中返回的数组res
通常属于dtype object
的原因。