在SBT中:我想定义一个inputKey,它读取命令行参数,稍微改变它们并使用该结果作为输入到其他inputKeys.
我试过了:
lazy val demo = inputKey[Unit]("A demo input task.")
lazy val root = (project in file(".")).settings(
libraryDependencies += jUnitInterface
).settings(
demo := {
val args: Seq[String] = spaceDelimited("<arg>").parsed
val one = (run in Compile).fullInput(args(0) + "foo").evaluated
}
)
Run Code Online (Sandbox Code Playgroud)
但我得到了error: Illegal dynamic reference: args.
我也尝试过:
demo := {
val args: Seq[String] = spaceDelimited("<arg>").parsed
System.setProperty("args0", args(0))
val one = (run in Compile).fullInput(System.getProperty(args0) + "foo").evaluated
}
Run Code Online (Sandbox Code Playgroud)
这根本不提供输入.我怀疑这是执行顺序的问题(当我需要时,属性不会被设置,因为JVM可以随意移动线路).
所以,在我的绝望中,我甚至尝试过残暴的:
demo := {
val args: Seq[String] = spaceDelimited("<arg>").parsed
try { …Run Code Online (Sandbox Code Playgroud) 鉴于张量t=[[1,2], [3,4]],我需要生产ts=[[1,2,1,2], [1,2,3,4], [3,4,1,2], [3,4,3,4]].也就是说,我需要将所有行对堆叠在一起.重要:张量具有维度[无,2],即.第一个维度是可变的.
我试过了:
tf.while_loop生成的索引列表idx=[[0, 0], [0, 1], [1, 0], [1, 1]],然后tf.gather(ts, idx).这有效,但很乱,我不知道如何处理渐变.tf.unstack(t),将堆叠的行添加到缓冲区,然后tf.stack(buffer).如果第一个维度是可变的,则这不起作用.x=t.expand_dims(t, 0), y=t.expand_dims(t, 1), s=tf.reshape(tf.add(x, y), [-1, 2]) s是[[2,4],[4,6],[4,6],[6,8]],即.每行组合的总和.但是我怎样才能进行堆叠而不是求和?我已经失败了2天:)在熊猫中,我具有以下数据框:
id1 id2 t1 l1 t2 l2
0 1 2 a b c d
1 3 4 g h i j
Run Code Online (Sandbox Code Playgroud)
我想一次融化两列。也就是说,所需的输出是:
id1 id2 tz lz
0 1 2 a b
1 1 2 c d
2 3 4 g h
3 3 4 i j
Run Code Online (Sandbox Code Playgroud)
我知道标准融化:
d.melt(id_vars=['id1', 'id2'],
value_vars=['t1', 't2', 'l1', 'l2'])
Run Code Online (Sandbox Code Playgroud)
但这会堆叠所有列
id1 id2 variable value
0 1 2 t1 a
1 3 4 t1 g
2 1 2 t2 c
3 3 4 t2 i
4 1 …Run Code Online (Sandbox Code Playgroud)