小编Anu*_*ush的帖子

如何有效地制作一个大的numpy数组

鉴于偶数n,我想提出一个3^(n/2)-1n2D-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数组?

python numpy

4
推荐指数
1
解决办法
964
查看次数

如何从文本文件映射二维数组

我有非常大的文件,其中包含正整数的二维数组

  • 每个文件包含一个矩阵

我想在不将文件读入内存的情况下处理它们。幸运的是,我只需要查看输入文件中从左到右的值。我希望能够处理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)

python mmap numpy

4
推荐指数
1
解决办法
482
查看次数

准确找到最小的特征值

我想准确找到矩阵的最小(绝对值)非零特征值.我可以使用numpy使用浮点运算来做到这一点但是

  • 有没有办法得到一个确切的答案?
  • 您是否必须对此表示同情或有其他方式吗?

矩阵将是小的(比如小于20乘20)具有整数值.当我说出确切的答案时,我的意思与John Habert的答案相似.

python math numpy sympy scipy

3
推荐指数
1
解决办法
980
查看次数

如何按日期顺序grep文件

我可以将Python文件列在最近更新到最近最新更新的目录中

ls -lt *.py
Run Code Online (Sandbox Code Playgroud)

但是我怎么能按顺序grep这些文件呢?

我理解一个人永远不应该试图解析输出,ls因为这是一件非常危险的事情.

bash

3
推荐指数
1
解决办法
503
查看次数

如何使用日期作为x轴绘制数据框

我有一个简单的数据框,有两列,'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)

我究竟做错了什么?

python matplotlib pandas

2
推荐指数
1
解决办法
68
查看次数

如何将日期与熊猫中的字符串进行比较?

我有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)

有什么方法可以说服熊猫在比较日期时允许日/月/年格式?

python datetime date pandas

2
推荐指数
1
解决办法
3500
查看次数

是否可以使用openpyxl更改列宽?

我有xlsx格式的电子表格。对于每一列,我需要将除一列以外的所有列的列宽设置为25,将其余列的宽度设置为50。度量单位是Excel使用特质

电子表格最初是在Google表格中生成的,因此无法执行此操作,因此当前我必须以xlsx格式下载它们,然后通过电子邮件将其发送给有Excel的朋友进行修复,因为我自己没有Excel副本。这显然远非理想。

是否可以使用openpyxl设置列宽?

python openpyxl

2
推荐指数
1
解决办法
3641
查看次数

如何在Networkx中更精美地绘制树

如果我使用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)

在此处输入图片说明

python matplotlib networkx

2
推荐指数
2
解决办法
143
查看次数

您如何像Mathematica一样执行这种不合适的积分?

采取以下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一样执行这种不正确的积分?我不介意使用哪种免费语言/图书馆。

python math r numerical-integration julia

2
推荐指数
1
解决办法
126
查看次数

如何迭代从所有可能的 b 位数组中选择 n 个 b 位数组的所有方法?

2^bb 位数组。有“2^b选择n”不同的方式来选择nb 位数组。我想遍历所有“2^b选择n”选择nb 位数组的不同方式。显然,这只有在现实的时间范围内才有可能,如果bn两者都很小。

我怎么能在朱莉娅做到这一点?

combinatorics julia

2
推荐指数
1
解决办法
62
查看次数