什么';s是以下numpy代码的KDB等价物
我正在尝试获取更多的Q,所以我对Q中实现以下目标的最佳方法感到好奇 在[18]中:a=np.arange(12).重塑(3,4) [19]中:b=np.random.randint(10,size=(3,4)) In[20]:Out[20]:数组([[0,1,2,3], [ 4, 5, 6, 7], [8,9,10,11]] In[21]:b Out[21]:数组([[3,6,9,5], [4, 2, 1, 3], [6,9,3,5]] In[22]:a[a>5]=b[a>5] In[23]:Out[23]:数组([[0,1,2,3], [4, 5, 1, 3], [6,9,3,5]] 还有什么好办法什么';s是以下numpy代码的KDB等价物,kdb,Kdb,我正在尝试获取更多的Q,所以我对Q中实现以下目标的最佳方法感到好奇 在[18]中:a=np.arange(12).重塑(3,4) [19]中:b=np.random.randint(10,size=(3,4)) In[20]:Out[20]:数组([[0,1,2,3], [ 4, 5, 6, 7], [8,9,10,11]] In[21]:b Out[21]:数组([[3,6,9,5], [4, 2, 1, 3], [6,9,3,5]] In[22]:a[a>5]=b[a>5] In[23
a[np.where(cond)] = b[np.where(cond)]
谢谢 a:3 4#til 12//根据上述逻辑初始化矩阵
b:34#12?10//根据上述逻辑初始化b矩阵
@“[a;t;:;b@'t:其中每个a>5]//基于上述逻辑a:3 4#til 12//根据上述逻辑初始化矩阵
b:34#12?10//根据上述逻辑初始化b矩阵
@'[a;t;:;b@'t:其中每个a>5]//基于上述逻辑下面提到了用于命令的等效KDB操作 注意:请注意,这些KDB和numpy函数并不完全相同 相等的它们仅在某些输入条件下表现相似。请特别详细阅读KDB函数的行为,因为 他们超负荷工作。 我在底部为这里使用的kdb操作符提供了链接 1。a=np.arange(12)。重塑(3,4) 在KDB中具有单个输入的numpy“arange”的等价物是“til”运算符。KDB中的整形运算符为“#” 等效的KDB命令为:
q) a:2 4 #til 12
2。b=np.random.randint(10,size=(3,4))
KDB中的“?”运算符给出随机值。它不支持大小,但可以使用shape操作符轻松实现
q) 2? 4 / output 1 3 (2 random values)
q) 3 4# 12?10
或者我们可以为其创建一个通用函数:
q) {(y;z )#?[y*z;x]} [8 ;3 ;4]
3。a[np.where(cond)]=b[np.where(cond)]
在KDB中有不同的方法来实现这一点。这取决于要使用的解决方案的列表大小。有些会表现更好
在小名单上,有些人会在大名单上表现更好。因此,根据您的项目测试这些
下面提到的所有三种解决方案都将为您提供所需的输出
q) a: 3 4#til 12;
q) b: (3 6 9 5;4 2 1 3;6 9 3 5)
q) a:(a*not i)+b*i:a>5 /solution 1
使用@和/或两者
q) a:{@[x;y;:;z]}'[a;i;b@'i: where each a > 5] / solution 2
q) a:@'[a;i;:;b@'i: where each a > 5] /short form
或使用点(.)运算符在适当位置更改原始阵列:
q) l:(til count a),'enlist each where@'a>5
q) {.[`a;x;:;y]}'[l;b ./:l] /solution 3
q) .'[`a;l;:;b ./:l] short form
请在此处阅读更多详细信息:
下面介绍了命令的等效KDB操作 注意:请注意,这些KDB和numpy函数并不完全相同 相等的它们仅在某些输入条件下表现相似。请特别详细阅读KDB函数的行为,因为 他们超负荷工作。 我在底部为这里使用的kdb操作符提供了链接 1。a=np.arange(12)。重塑(3,4) 在KDB中具有单个输入的numpy“arange”的等价物是“til”运算符。KDB中的整形运算符为“#” 等效的KDB命令为:
q) a:2 4 #til 12
2。b=np.random.randint(10,size=(3,4))
KDB中的“?”运算符给出随机值。它不支持大小,但可以使用shape操作符轻松实现
q) 2? 4 / output 1 3 (2 random values)
q) 3 4# 12?10
或者我们可以为其创建一个通用函数:
q) {(y;z )#?[y*z;x]} [8 ;3 ;4]
3。a[np.where(cond)]=b[np.where(cond)]
在KDB中有不同的方法来实现这一点。这取决于要使用的解决方案的列表大小。有些会表现更好
在小名单上,有些人会在大名单上表现更好。因此,根据您的项目测试这些
下面提到的所有三种解决方案都将为您提供所需的输出
q) a: 3 4#til 12;
q) b: (3 6 9 5;4 2 1 3;6 9 3 5)
q) a:(a*not i)+b*i:a>5 /solution 1
使用@和/或两者
q) a:{@[x;y;:;z]}'[a;i;b@'i: where each a > 5] / solution 2
q) a:@'[a;i;:;b@'i: where each a > 5] /short form
或使用点(.)运算符在适当位置更改原始阵列:
q) l:(til count a),'enlist each where@'a>5
q) {.[`a;x;:;y]}'[l;b ./:l] /solution 3
q) .'[`a;l;:;b ./:l] short form
请在此处阅读更多详细信息: