鉴于偶数n,我想提出一个3^(n/2)-1由n2D-numpy的阵列.每一行的前半部分应迭代所有可能的-1,0,1值,后半部分应为零.但是,上半场永远不应该全是零.
这个代码几乎可以工作,除了它包括我不想要的所有零行.
n = 4
M = [list(row) +[0]*(n/2) for row in itertools.product([-1,0,1], repeat = n/2)]
print np.array(M)
Run Code Online (Sandbox Code Playgroud)
它给
[[-1 -1 0 0]
[-1 0 0 0]
[-1 1 0 0]
[ 0 -1 0 0]
[ 0 0 0 0]
[ 0 1 0 0]
[ 1 -1 0 0]
[ 1 0 0 0]
[ 1 1 0 0]]
Run Code Online (Sandbox Code Playgroud)
是否有一个不那么可怕,更有时间和空间效率的方法来做到这一点? n最终将是30,我当然不打印出来.3 ^ 15只有14,348,907但是当我设置n=30和使用很长时间时,代码使用我的8GB机器上的所有RAM .
如何在不通过itertools,列表等的情况下直接制作numpy数组?
我有非常大的文件,其中包含正整数的二维数组
我想在不将文件读入内存的情况下处理它们。幸运的是,我只需要查看输入文件中从左到右的值。我希望能够处理mmap每个文件,这样我就可以像在内存中一样处理它们,但实际上无需将文件读入内存。
较小版本的示例:
[[2, 2, 6, 10, 2, 6, 7, 15, 14, 10, 17, 14, 7, 14, 15, 7, 17],
[3, 3, 7, 11, 3, 7, 0, 11, 7, 16, 0, 17, 17, 7, 16, 0, 0],
[4, 4, 8, 7, 4, 13, 0, 0, 15, 7, 8, 7, 0, 7, 0, 15, 13],
[5, 5, 9, 12, 5, 14, 7, 13, 9, 14, 16, 12, 13, 14, 7, 16, 7]]
Run Code Online (Sandbox Code Playgroud)
是否可以使用mmap这样的文件,以便我可以使用以下方法处理np.int64值
for …Run Code Online (Sandbox Code Playgroud) 我想准确找到矩阵的最小(绝对值)非零特征值.我可以使用numpy使用浮点运算来做到这一点但是
矩阵将是小的(比如小于20乘20)具有整数值.当我说出确切的答案时,我的意思与John Habert的答案相似.
我可以将Python文件列在最近更新到最近最新更新的目录中
ls -lt *.py
Run Code Online (Sandbox Code Playgroud)
但是我怎么能按顺序grep这些文件呢?
我理解一个人永远不应该试图解析输出,ls因为这是一件非常危险的事情.
我有一个简单的数据框,有两列,'date'和'amount'.我想用日期作为x轴绘制金额.数据的第一行是:
22/05/2018,52068.67
21/05/2018,52159.19
15/05/2018,52744.03
08/05/2018,54666.21
08/05/2018,54677.51
01/05/2018,53890.59
30/04/2018,54812.25
27/04/2018,52258.23
26/04/2018,52351.47
23/04/2018,49777.04
23/04/2018,49952.44
23/04/2018,49992.44
05/04/2018,53238.59
03/04/2018,53631.09
03/04/2018,53839.64
28/03/2018,50836.78
26/03/2018,51206.67
26/03/2018,51372.02
14/03/2018,51110.17
12/03/2018,51411.31
06/03/2018,51169.91
05/03/2018,51374.57
27/02/2018,48728.85
27/02/2018,48730.5
16/02/2018,44988.25
14/02/2018,41948.03
12/02/2018,43776.31
12/02/2018,43800.31
12/02/2018,43840.11
05/02/2018,29358.96
26/01/2018,39491.0
24/01/2018,36470.03
23/01/2018,36562.76
23/01/2018,36616.61
22/01/2018,36582.46
22/01/2018,36665.71
22/01/2018,36743.31
17/01/2018,36965.3
16/01/2018,37044.6
09/01/2018,42083.65
08/01/2018,42183.39
05/01/2018,42285.41
03/01/2018,41537.51
03/01/2018,41579.51
02/01/2018,41945.32
27/12/2017,43003.33
27/12/2017,43217.29
18/12/2017,38208.63
15/12/2017,38315.53
Run Code Online (Sandbox Code Playgroud)
但是,该图给出了数据中未出现的点数.例如,在2018年5月,在30000附近没有价值.
我的代码是:
import pandas as pd
import matplotlib.pyplot as plt
df = pd.read_csv("test.csv", header=None, names =['date', 'amount'])
df['time'] = pd.to_datetime(df['date'])
df.set_index(['time'],inplace=True)
df['amount'].plot()
plt.show()
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?
我有df['date'] = pd.to_datetime(df['Transaction_Date'], format = '%d/%m/%Y')这似乎工作正常。但是,我真的很烦人,当我比较日期时,我似乎仍然必须使用月/日/年格式。如
df[(df['date'] > "04/10/2018") & (df['date'] < "05/10/2018")]
Run Code Online (Sandbox Code Playgroud)
有什么方法可以说服熊猫在比较日期时允许日/月/年格式?
如果我使用networkx制作一棵树并将其绘制,则节点重叠。有没有办法画出来所以没有重叠?
import matplotlib.pyplot as plt
import networkx as nx
T = nx.generators.balanced_tree(2, 5)
nx.draw(T)
plt.show()
Run Code Online (Sandbox Code Playgroud)
采取以下Mathematica代码:
f[x_] := Exp[-x];
c = 0.9;
g[x_] := c*x^(c - 1)*Exp[-x^c];
SetPrecision[Integrate[f[x]*Log[f[x]/g[x]], {x, 0.001, \[Infinity]}],20]
Run Code Online (Sandbox Code Playgroud)
Mathematica可以毫无问题地进行计算并给出答案0.010089328699390866240。我希望能够执行类似的积分,但是没有Mathematica的副本。例如,仅凭天真地在scipy中实现它,就很难使用标准正交库,因为f(x)和g(x)任意接近0。这是使用标准正交的Python示例,由于需要无限的精度而失败::
from scipy.integrate import quad
import numpy as np
def f(x):
return sum([ps[idx]*lambdas[idx]*np.exp(- lambdas[idx] * x) for idx in range(len(ps))])
def g(x):
return scipy.stats.weibull_min.pdf(x, c=c)
c = 0.9
ps = [1]
lambdas = [1]
eps = 0.001 # weibull_min is only defined for x > 0
print(quad(lambda x: f(x) * np.log(f(x) / g(x)), eps, np.inf)) # Output
Run Code Online (Sandbox Code Playgroud)
应该大于0
如何在代码中像Mathematica一样执行这种不正确的积分?我不介意使用哪种免费语言/图书馆。
有2^bb 位数组。有“2^b选择n”不同的方式来选择nb 位数组。我想遍历所有“2^b选择n”选择nb 位数组的不同方式。显然,这只有在现实的时间范围内才有可能,如果b和n两者都很小。
我怎么能在朱莉娅做到这一点?