如何用功能性的,基于数组的语言(如K(或Q))表达这种命令性功能?
在草率的C ++中:
vector<int> x(10), y(10); // Assume these are initialized with some values.
// BTW, 4 is just a const -- it's part of the algorithm and is arbitrarily chosen.
vector<int> result1(x.size() - 4 + 1); // A place to hold a resulting array.
vector<int> result2(x.size() - 4 + 1); // A place to hold another resulting array.
// Here's the code I want to express functionally.
for (int i = 0; i <= x.size() …Run Code Online (Sandbox Code Playgroud) 我在:创建了一个变量:
q)myvar: 1
Run Code Online (Sandbox Code Playgroud)
我该如何删除它?我试过了:
q)delete myvar from `.z
Run Code Online (Sandbox Code Playgroud)
但是命名空间`.z显然不是正确的,因为变量仍然存在:
q)myvar
1
Run Code Online (Sandbox Code Playgroud) 我有一个包含多个列的表("ibmqt"),我想添加一个新列,其中包含布尔值,指示每一行是否有一列("bid")大于或等于另一列("问").
到目前为止,我最成功的尝试是:
ibmqt: update (pricecross:select bid>=ask from ibmqt) from ibmqt
Run Code Online (Sandbox Code Playgroud)
但是,这导致以下结果:
time sym bid ask bsize asize pricecross
----------------------------------------------------
00:00:59.063 IBM 43.53 43.57 10000 9000 (,`ask)!,0b
00:01:03.070 IBM 43.54 43.59 6500 3000 (,`ask)!,0b
00:02:31.911 IBM 43.56 43.6 500 4500 (,`ask)!,0b
00:03:43.070 IBM 43.56 43.56 10000 2500 (,`ask)!,1b
00:06:01.170 IBM 43.54 43.56 8500 4500 (,`ask)!,0b
00:06:11.081 IBM 43.56 43.58 500 1500 (,`ask)!,0b
00:08:15.126 IBM 43.55 43.57 1500 9000 (,`ask)!,0b
Run Code Online (Sandbox Code Playgroud)
显然,在"pricecross"栏中,我只想要0,0,0,1,0等.
有什么建议?
简单的问题 - 我已经使用Python 3.6成功连接到Coinbase API并在我的控制台中接收BTC买/卖价格.
我想将它连接到一个kdb数据库并开始创建一个滴答数据的HDB,但我对如何构建这个设置有点困惑,即将get请求推送到数据库进行存储.我的python代码看起来像......
api_key = 'XXXXX'
api_secret = 'XXXXX'
from coinbase.wallet.client import Client
import time, requests
client = Client(api_key, api_secret)
starttime = time.time()
while True:
buy_price = client.get_buy_price(currency_pair = 'BTC-USD')
sell_price = client.get_sell_price(currency_pair = 'BTC-USD')
time.sleep(10.0)
print(buy_price)
print(sell_price)
print("=-=-=-=-=-=")
Run Code Online (Sandbox Code Playgroud)
控制台打印Feed,看起来像......
{
"amount": "8034.79",
"base": "BTC",
"currency": "USD"
}
{
"amount": "7875.67",
"base": "BTC",
"currency": "USD"
}
=-=-=-=-=-=
{
"amount": "8034.80",
"base": "BTC",
"currency": "USD"
}
{
"amount": "7875.97",
"base": "BTC",
"currency": "USD"
}
=-=-=-=-=-=
Run Code Online (Sandbox Code Playgroud)
在本地存储这些数据的任何指导都会有所帮助.如果您需要任何其他信息,请与我们联系.
先感谢您!
假设我有一张桌子
tbl:flip `id`evt!(1 1 1 2 2 2 2 2 3 3; `a`b`c`a`b`b`b`c`a`c)
Run Code Online (Sandbox Code Playgroud)
如何有效地计算evt的出现次数,但每个id只能计算一次
因此,结果应该如下(或将evt映射到唯一计数的任何其他格式)
res:flip `evt`ct !(`a`b`c; 3 2 3)
Run Code Online (Sandbox Code Playgroud) 让我们假设我有下表.
t:([]date:5#.z.D; ric:`A.HK`B.HK`C.HK`D.KS`E.T);
Run Code Online (Sandbox Code Playgroud)
从这里,我想删除尾随字符串,包括"." 如果满足某些条件.
以下是我一直在做的方式 - 但我想知道是否会有更高效/更快的方式.
newriclist: exec distinct ric from t;
dummy:{ (`ric`newric)!(x; `$ssr[string[x]; ".KS"; ""]) } each newriclist;
t lj `ric xkey dummy ...
Run Code Online (Sandbox Code Playgroud)
或者,这是我想要理想地实现的目标,但它似乎不起作用.
update ric:?[string[ric] like "*.KS"; `$ssr[string[ric]; ".KS"; ""]; ric] from `t;
Run Code Online (Sandbox Code Playgroud) 我有以下kdb表
name value price
-------------------------
Paul 1 2 3 4
Run Code Online (Sandbox Code Playgroud)
价值和价格是列表.我怎样才能将它们转换成
name value price
------------------------------
Paul 1 3
Paul 2 4
Run Code Online (Sandbox Code Playgroud)
?谢谢!!
我将如何遍历KDB Q中的列表并替换不符合某些子字符串条件的元素?
逻辑示例伪代码:
list.stream()
.forEach(x -> {
if (x matches substring) :
newList.add(x)
else :
newList.add("")
})
Run Code Online (Sandbox Code Playgroud)
当前列表:
S: ("Lint"; "Stack"; "Linode"; "Overflow";"Linux")
Run Code Online (Sandbox Code Playgroud)
要匹配的子字符串在"Li"这里。这样,字符串“ Stack”和“ Overflow”被空字符串替换,因为它们不包含子字符串。
结果列表:
S: ("Lint"; ""; "Linode"; "";"Linux")
Run Code Online (Sandbox Code Playgroud) 我有一张桌子:
q)t:([] a:1 2 3; b:```; c:`a`b`c)
a b c
-----
1 a
2 b
3 c
Run Code Online (Sandbox Code Playgroud)
从此表中,我只想选择不具有空值的列,在这种情况下,输出中应该省略列b(类似于pandas中的dropna方法)。
expected output
a c
---
1 a
2 b
3 c
Run Code Online (Sandbox Code Playgroud)
我尝试了很多类似的事情
select from t where not null cols
Run Code Online (Sandbox Code Playgroud)
但没有用。