我想使用patsy的def binomial_coeffs1(n, k):
#top down DP
if (k == 0 or k == n):
return 1
if (memo[n][k] != -1):
return memo[n][k]
memo[n][k] = binomial_coeffs1(n-1, k-1) + binomial_coeffs1(n-1, k)
return memo[n][k]
def binomial_coeffs2(n, k):
#bottom up DP
for i in range(n+1):
for j in range(min(i,k)+1):
if (j == 0 or j == i):
memo[i][j] = 1
else:
memo[i][j] = memo[i-1][j-1] + memo[i-1][j]
#end if
#end for
#end for
return memo[n][k]
def print_array(memo):
for i in range(len(memo)):
print('\t'.join([str(x) for x in memo[i]]))
#main
n = 5
k = 2
print("top down DP")
memo = [[-1 for i in range(6)] for j in range(6)]
nCk = binomial_coeffs1(n, k)
print_array(memo)
print("C(n={}, k={}) = {}".format(n,k,nCk))
print("bottom up DP")
memo = [[-1 for i in range(6)] for j in range(6)]
nCk = binomial_coeffs2(n, k)
print_array(memo)
print("C(n={}, k={}) = {}".format(n,k,nCk))
函数生成一个设计矩阵,在其中保留具有NaN值的行。例如,以下代码将返回一个包含四行的设计矩阵,这是我们通常想要的。但是,在这种情况下,我希望dmatrix
返回一个包含五行的矩阵,其中第一行将具有NaN值。
dmatrix
或者,我将选择一个答案,使我可以检索已删除/保留的行号。在上面的示例中,行1是删除的行,而行2-5被保留。
答案 0 :(得分:0)
尝试:
dmatrix(...,NA_action = patsy.NAAction(NA_types = []))
这告诉patsy不要将NaN视为指示缺少的值,因此它将通过传递。文件在这里:https://patsy.readthedocs.io/en/latest/API-reference.html#missing-values
或者,我将选择一个答案,使我能够检索已删除/保留的行号。
如果使用return_type="dataframe"
,则patsy将返回一个包含设计矩阵的pandas DataFrame,并且该DataFrame上的索引将与原始输入中的行相对应,因此您可以看到保留或删除了哪些行