小编unu*_*tbu的帖子

scipy.sparse矩阵的索引操作的矢量化

即使一切似乎都是矢量化的,下面的代码运行得太慢了.

from numpy import *
from scipy.sparse import *

n = 100000;
i = xrange(n); j = xrange(n);
data = ones(n);

A=csr_matrix((data,(i,j)));

x = A[i,j]
Run Code Online (Sandbox Code Playgroud)

问题似乎是索引操作是作为python函数实现的,并且调用A[i,j]结果导致以下分析输出

         500033 function calls in 8.718 CPU seconds

   Ordered by: internal time

   ncalls  tottime  percall  cumtime  percall filename:lineno(function)
   100000    7.933    0.000    8.156    0.000 csr.py:265(_get_single_element)
        1    0.271    0.271    8.705    8.705 csr.py:177(__getitem__)
(...)
Run Code Online (Sandbox Code Playgroud)

也就是说,python函数_get_single_element被调用100000次,这实在是效率低下.为什么不在纯C中实现?有没有人知道解决这个限制的方法,并加快上述代码?我应该使用不同的稀疏矩阵类型吗?

python indexing scipy sparse-matrix

6
推荐指数
1
解决办法
1058
查看次数

使用activate从crontab调用python脚本

我如何从crontab调用一个需要使用activate(source env/bin/active)的python脚本?

python crontab virtualenv

6
推荐指数
1
解决办法
5108
查看次数

背包的变化 - 最小总值超过'W'

给出通常n的项目集(每个项目无限制,比如说),权重和值:

w1, v1
w2, v2
...
wn, vn
Run Code Online (Sandbox Code Playgroud)

和目标重量W,我需要选择项目,使总重量至少 W和总值最小化.

这看起来像整数/无界背包问题的变化(或在某种意义上说是逆向).任何有关制定DP算法的帮助都将非常感谢!

algorithm knapsack-problem

6
推荐指数
1
解决办法
6237
查看次数

Wonder-twin power"Zoom to rectangle"激活?

在此输入图像描述

有没有办法在显示matplotlib图时默认自动激活"缩放到矩形"工具?

import numpy as np
import matplotlib.pyplot as plt
x = np.arange(-300, 300)
y = x**2-7*x
fig = plt.figure()
ax = fig.add_subplot(1,1,1)
plt.plot(x, y)
# Add something here to activate the "Zoom to rectangle" tool?
plt.show()
Run Code Online (Sandbox Code Playgroud)

python matplotlib

6
推荐指数
1
解决办法
1026
查看次数

使用最接近的值对整数列表进行分组

我有一个清单:

d = [23,67,110,25,69,24,102,109]
Run Code Online (Sandbox Code Playgroud)

如何将最近的值与动态间隙分组,并创建这样的元组,最快的方法是什么?:

[(23,24,25),(67,69),(102,109,110)]
Run Code Online (Sandbox Code Playgroud)

python math grouping list

6
推荐指数
1
解决办法
2934
查看次数

3D 直方图上的错误跟踪器值

这是一些显示 3D 直方图的代码。但是,右下角的跟踪器无法正确显示鼠标的位置。

x = e当鼠标明显地结束时,跟踪器会说c。跟踪器说z = 01-02。那是怎么回事?(z 跟踪器值似乎由 y 轴格式化程序控制。)

如何修复代码?

import matplotlib.pyplot as plt
import numpy as np
import mpl_toolkits.mplot3d.axes3d as axes3d
import matplotlib.dates as mdates
import matplotlib.ticker as ticker
import datetime as dt
import random

np.random.seed(0)
fig = plt.figure()
ax = fig.add_subplot(1, 1, 1, projection = '3d')

cmap = plt.get_cmap('RdBu')
event_labels = 'abcdefghij'
events = range(len(event_labels))
label_map = dict(zip(events,event_labels))

dates = mdates.drange(dt.datetime(2012, 10, 1),
                      dt.datetime(2012, 10, 10),
                      dt.timedelta(days = 1))
events_list = …
Run Code Online (Sandbox Code Playgroud)

python matplotlib

6
推荐指数
1
解决办法
229
查看次数

savetxt在python中的两列,numpy

我有一些数据作为numpy 2D数组列表 -

array([[ 0.62367947],
       [ 0.95427859],
       [ 0.97984112],
       [ 0.7025228 ],
       [ 0.86436385],
       [ 0.71010739],
       [ 0.98748138],
       [ 0.75198057]])

array([[-1.,  1., -1.],    
       [-1.,  1.,  1.],
       [ 1.,  1.,  1.],
       [ 1., -1.,  1.],
       [-1., -1., -1.],
       [ 1.,  1., -1.],
       [ 1., -1., -1.],
       [-1., -1.,  1.]])
Run Code Online (Sandbox Code Playgroud)

我想将它们保存在txt文件中,以便它们看起来像

0.62367947    -1 1 -1    
0.95427859    -1 1 1    
0.97984112     1 1 1
Run Code Online (Sandbox Code Playgroud)

有人可以帮助我如何使用numpy savetxt来做到这一点

python numpy

6
推荐指数
1
解决办法
9548
查看次数

将高维R数据集加载到Pandas DataFrame中

一些R数据集可以很容易地加载到Pandas DataFrame或Panel中:

import pandas.rpy.common as com
infert = com.load_data('infert')
print(infert.head())
Run Code Online (Sandbox Code Playgroud)

只要R数据集的维度<= 3,这似乎就有效.更高维度的数据集会打印错误消息:

In [67]: com.load_data('Titanic')
Cannot handle dim=4
Run Code Online (Sandbox Code Playgroud)

此错误消息源自rpy/common.py _convert_array函数.

当然,Pandas不能直接将4维矩阵用于数据框架或面板,但有一些解决方法可以将数据集加载Titanic到DataFrame(可能带有分层索引)吗?

python r rpy2 pandas

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

如何访问多索引数据帧的最后一个元素

我有一个带有 ID 和时间戳的数据框作为多索引。数据框中的索引按 ID 和时间戳排序,我想为每个 ID 选择最新的时间戳。例如:

IDs    timestamp     value
0      2010-10-30     1
       2010-11-30     2
1      2000-01-01     300
       2007-01-01     33
       2010-01-01     400
2      2000-01-01     11
Run Code Online (Sandbox Code Playgroud)

所以基本上我想要的结果是

IDs    timestamp    value
0      2010-11-30   2
1      2010-01-01   400
2      2000-01-01   11
Run Code Online (Sandbox Code Playgroud)

在熊猫中执行此操作的命令是什么?

python pandas

6
推荐指数
1
解决办法
1486
查看次数

如何在Ubuntu上安装最新版本的NumPy/Scipy/Matplotlib/IPython/Pandas

用户有时需要知道如何安装比他们的OS包管理器提供的更新版本的Pandas.Pandas需要NumPy,并且最适合SciPy,Matplotlib和IPython.

如何安装最新版本的NumPy/Scipy/Matplotlib/IPython/Pandas?

numpy matplotlib ipython scipy pandas

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