我有一个数字数组,称为X形状(1,19)。
我也有一些功能,例如X
,np.log(X)
,1/(1+np.exp(-X))
等等。
我需要在数组中的每个项目上获得所有具有应用函数的数组组合。
例如:
X = [ 1 2 3 ]
Y[1] = [ 1 2 3]
Y[2] = [ ln(1) 2 3 ]
Y[3] = [ 1 ln(2) 3 ]
...
Y[k] = [ ln(1) ln(2) ln(3) ]
...
Y[m] = [ 1 ln(2) exp(3)]
...
Y[n] = [ exp(1) exp(2) exp(3) ]
有可能吗?
答案 0 :(得分:0)
这是一个完全符合你想要的例子,但是在一个小得多的X和2个函数上:
namespace TestApp
{
class Program
{
static void Main(string[] args)
{
while (!MySingleton.Instance.IsReady)
Thread.Sleep(100);
Console.WriteLine("Done");
Console.Read();
}
}
public class MySingleton
{
static MySingleton()
{
}
private static readonly MySingleton instance = new MySingleton();
private static bool threadFinished = false;
public bool IsReady
{
get { return threadFinished; }
}
private MySingleton()
{
Thread t = new Thread(new ThreadStart(MyAction));
t.Start();
}
public static MySingleton Instance
{
get { return instance; }
}
static void MyAction()
{
threadFinished = true;
}
}
答案 1 :(得分:0)
以下是使用list-comprehension的答案
import itertools
import math
def iden(x):
return x
def log(x):
return math.log(x)
def exp(x):
return 1/(1+math.exp(-x))
X = [1, 2, 3]
funcs = [iden, log, exp]
def apply(functions, values):
return [func(val) for func,val in zip(functions, values)]
values = [apply(f, X) for f in itertools.product(funcs, repeat=len(funcs))]
apply
功能似乎很有用。如果你不想要它,那么这将做
values = [[func(val) for func,val in zip(f, X)] for f in itertools.product(funcs, repeat=len(funcs))]
[1, 2, 3] # (iden, iden, iden)
[1, 2, 1.0986122886681096] # (iden, iden, log)
[1, 2, 0.95257412682243336] # (iden, iden, exp)
[1, 0.69314718055994529, 3] # (iden, log, iden)
答案 2 :(得分:0)
functions=np.array([np.abs,lambda x : -x,np.square])
values=np.arange(3)
nf,nv=len(functions),len(values)
select=[[int(x) for x in np.base_repr(k,nf,nv)[-nv:]] for k in range(nf**nv)]
Y=[[f(x) for f,x in zip(functions[s],values)] for s in select]
选择nf**nv
元素:
[[0, 0, 0],
[0, 0, 1],
[0, 0, 2],
[0, 1, 0],
[0, 1, 1],
[0, 1, 2],
[0, 2, 0],
[0, 2, 1],
[0, 2, 2],
[1, 0, 0],
[1, 0, 1],
[1, 0, 2],
[1, 1, 0],
[1, 1, 1],
[1, 1, 2],
[1, 2, 0],
[1, 2, 1],
[1, 2, 2],
[2, 0, 0],
[2, 0, 1],
[2, 0, 2],
[2, 1, 0],
[2, 1, 1],
[2, 1, 2],
[2, 2, 0],
[2, 2, 1],
[2, 2, 2]]
然后Y
就是你想要的。