假设我有以下内容:
In [1]: import pandas as pd
import numpy as np
df = pd.DataFrame(data=np.random.rand(11),index=pd.date_range('2015-04-20','2015-04-30'),columns=['A'])
Out[1]:
A
2015-04-20 0.694983
2015-04-21 0.393851
2015-04-22 0.690138
2015-04-23 0.674222
2015-04-24 0.763175
2015-04-25 0.761917
2015-04-26 0.999274
2015-04-27 0.907871
2015-04-28 0.464818
2015-04-29 0.005733
2015-04-30 0.806351
Run Code Online (Sandbox Code Playgroud)
我有一些复杂的方法可以将单个索引标识为有趣,例如'2015-04-25'.我可以使用以下命令检索具有该索引的行:
In [2]: df.loc['2015-04-25']
Out[2]:
A 0.761917
Name: 2015-04-25 00:00:00, dtype: float64
Run Code Online (Sandbox Code Playgroud)
在索引值之前和/或之后获取n行的最佳方法是什么?
我想做的是:
In[3]: df.getRowsBeforeLoc('2015-04-25',3)
Out[3]:
2015-04-22 0.690138
2015-04-23 0.674222
2015-04-24 0.763175
2015-04-25 0.761917
Run Code Online (Sandbox Code Playgroud)
或等效地:
In[3]: df.getRowsAfterLoc('2015-04-25',3)
Out[3]:
2015-04-25 0.761917
2015-04-26 0.999274
2015-04-27 0.907871
2015-04-28 0.464818
Run Code Online (Sandbox Code Playgroud)
(我对是否包含与目标索引值本身对应的行没有强烈的意见.)
在IPython笔记本中,我曾经能够通过使用HTML
IPython显示模块中的函数显示包含html作为实际html的python字符串.
from IPython.display import HTML
Run Code Online (Sandbox Code Playgroud)
在jupyter笔记本中,显示模块不再存在.有谁知道我在哪里可以找到HTML功能?
我使用Jupyter笔记本4.1,IPython 4.0.2和Python 3.5.1 64位
我在某种程度上无法改变IPython中的当前工作目录,我不知道为什么.
在下面的示例中,我从C驱动器的根目录启动IPython,并尝试以多种方式更改当前工作目录.奇怪的事情导致:
C:\>ipython
Python 2.7.6 (default, Nov 10 2013, 19:24:18) [MSC v.1500 32 bit (Intel)]
Type "copyright", "credits" or "license" for more information.
IPython 2.0.0 -- An enhanced Interactive Python.
? -> Introduction and overview of IPython's features.
%quickref -> Quick reference.
help -> Python's own help system.
object? -> Details about 'object', use 'object??' for extra details.
In [1]: cd
C:\Users\jkokorian
In [2]: %cd "C:\Dell"
C:\Dell
In [3]: cd
C:\Users\jkokorian
In [4]: import os
In [5]: os.chdir("C:\Dell")
In [6]: …
Run Code Online (Sandbox Code Playgroud) 我有一个程序进行内存密集型模拟.下面我写了一个小型控制台应用程序,它复制了我遇到的问题.
class Program {
static void Main(string[] args) {
var t = new Task(() => DoMemoryHog(20000000));
t.Start();
t.Wait();
t.Dispose();
t = null;
GC.Collect();
Console.WriteLine("Done");
Console.ReadLine();
}
static void DoMemoryHog(int n) {
ConcurrentBag<double> results = new ConcurrentBag<double>();
Parallel.For(0, n, (i) => {
results.Add(Math.Sqrt(i.GetHashCode()));
});
}
}
Run Code Online (Sandbox Code Playgroud)
当我运行程序时,我可以看到Windows任务管理器中使用的内存量增加,但是当任务完成(并显示"完成")时,内存不会恢复到原始级别,只会发生当我关闭应用程序时.
有没有人知道如何释放并行任务使用的内存,而主应用程序一直在运行?正如你所看到的,我已经尝试过处理它,将它的引用设置为null并手动运行垃圾收集器(我知道你不应该这样做).
有谁知道为什么直接在熊猫系列上设置项目是如此令人难以置信的慢?我做错了什么,或者只是它的方式?
我运行了几个测试,看看在pandas Series对象上设置值的最快方法是什么.以下是从快到慢排序的结果:
%%timeit
a = np.empty(1000, dtype='float')
for i in range(len(a)):
a[i] = 1.0
s = pd.Series(data=a)
Run Code Online (Sandbox Code Playgroud)
1000个循环,最佳3:630μs/循环
%%timeit
l = []
for i in range(1000):
l.append(1.0)
s = pd.Series(data=l)
Run Code Online (Sandbox Code Playgroud)
1000循环,最佳3:每循环1.05毫秒
%%timeit
a = np.empty(1000, dtype='float')
s = pd.Series(data=a)
for i in range(len(a)):
s.set_value(i, 1.0)
Run Code Online (Sandbox Code Playgroud)
100个循环,最佳3:每循环18.5毫秒
%%timeit
a = np.empty(1000, dtype='float')
s = pd.Series(data=a)
for i in range(len(a)):
s[i] = 1.0
Run Code Online (Sandbox Code Playgroud)
10个循环,每个循环最佳3:30.2 ms
%%timeit
a = np.empty(1000, dtype='float')
s = pd.Series(data=a)
for i …
Run Code Online (Sandbox Code Playgroud) 我最近寻找一种方法来展平嵌套的python列表,如下所示:[[1,2,3],[4,5,6]],这个:[1,2,3,4,5,6] .
Stackoverflow一如既往地有用,我找到了一篇具有这种巧妙的列表理解的帖子:
l = [[1,2,3],[4,5,6]]
flattened_l = [item for sublist in l for item in sublist]
Run Code Online (Sandbox Code Playgroud)
我以为我理解列表理解是如何工作的,但显然我没有得到最微妙的想法.最让我困惑的是,除了上面的理解之外,这也会运行(尽管它没有给出相同的结果):
exactly_the_same_as_l = [item for item in sublist for sublist in l]
Run Code Online (Sandbox Code Playgroud)
有人能解释一下python如何解释这些东西吗?基于第二个扩展,我希望python将它解释回来,但显然并非总是如此.如果是,第一个理解应该抛出一个错误,因为'sublist'不存在.我的思绪完全扭曲,帮助!
我正在尝试加快使用 T4 模板的速度。我发现了以下示例(此处):
\n\n<#@ template hostspecific="True" #>\n<#@ output extension="txt" #>\n<#@ include file="T4Toolbox.tt" #>\n<#@ import namespace="EnvDTE" #>\n<#\n CodeEnum enumeration = GetEnum("ContactType.cs");\n WriteLine("Found enumeration " + enumeration.Name);\n foreach (CodeElement element in enumeration.Children)\n {\n CodeVariable value = element as CodeVariable;\n if (value != null)\n WriteLine("\xe2\x80\xa6 found value " + value.Name);\n }\n#>\n<#+\n private CodeEnum GetEnum(string enumFile)\n {\n ProjectItem projectItem = TransformationContext.FindProjectItem(enumFile);\n FileCodeModel codeModel = projectItem.FileCodeModel;\n return FindEnum(codeModel.CodeElements);\n }\n\n private CodeEnum FindEnum(CodeElements elements)\n {\n foreach (CodeElement element in elements)\n {\n CodeEnum enumeration …
Run Code Online (Sandbox Code Playgroud) 我希望能够在 matplotlib 中制作可以立体 3D 显示的 3D 绘图,如下所示:
左图像的相机相对于右图像稍微平移。如果您稍加练习,您就可以欺骗您的大脑,让您的左眼看左图像,右眼看右图像,从而在任何屏幕上看到 3D!
不管怎样,我希望能够使任何 matplotlib 3d 图显示两次,并且一台相机稍微平移。我已经成功地通过翻译数据来获得立体图本身:
from matplotlib import cm
from matplotlib.ticker import LinearLocator, FormatStrFormatter
import matplotlib.pyplot as plt
import numpy as np
fig = plt.figure(figsize=(10,5))
axl = fig.add_subplot(1,2,1,projection='3d')
axr = fig.add_subplot(1,2,2,projection='3d')
X = np.arange(-5, 5, 0.25)
Y = np.arange(-5, 5, 0.25)
X, Y = np.meshgrid(X, Y)
R = np.sqrt(X**2 + Y**2)
Z = np.sin(R)
axr.plot_surface(X, Y, Z, rstride=1, cstride=1, cmap=cm.coolwarm,
linewidth=0, antialiased=False)
axl.plot_surface(X, Y-5, Z, rstride=1, cstride=1, cmap=cm.coolwarm,
linewidth=0, antialiased=False)
for ax …
Run Code Online (Sandbox Code Playgroud) 我试图制作一个简单的图表,显示许多属于具有特定顺序的大型数据集的曲线,比如说情节1..n.随着n的增加,曲线的形状逐渐变化.读者可以准确地看到哪个图属于n的哪个值并不重要,但是他们应该能够猜测n的数量级.
因此,我做这样的事情:
nValues = range(0,30)
xValues = np.linspace(0,10)
dataset = [(xValues-5-0.5*n)**2 for n in nValues]
colors = {n: colorsys.hsv_to_rgb(hue,0.9,0.7) for n,hue in zip(nValues,np.linspace(0,0.7,len(nValues)))}
for n in nValues:
plt.plot(dataset[n],color=colors[n])
Run Code Online (Sandbox Code Playgroud)
(为了清楚起见,这仅仅是为了示例,我的数据实际上存储在一个漂亮的pandas数据帧中.)
而不是图例,我想在图表旁边添加一个颜色条,可能有几个标记和标签(至少是最小值和最大值),以指示哪个颜色属于n的哪个值,但我不是知道如何做到这一点.如果我真的从ColorMap获得我的绘图颜色,我认为事情可能会更容易,但我也不知道如何做到这一点,我也不知道如何从那里开始.
欢迎任何指示!
我试图抓住knockout.js,但我似乎遇到了一个我不知道的javascript怪癖.
<ul data-bind="foreach: someList">
<li data-bind="text: number"></li>
</ul>
Run Code Online (Sandbox Code Playgroud)
function NestedViewModel(number) {
self = this;
self.number = ko.observable(number);
}
function ViewModel() {
self = this;
self.someList = [];
for (i=0;i<10;i++) {
var vm = new NestedViewModel(i);
self.someList.push(vm);
}
}
ko.applyBindings(new ViewModel());
Run Code Online (Sandbox Code Playgroud)
当我运行此代码时,没有任何反应.控制台显示错误:
Uncaught TypeError: Cannot read property 'push' of undefined
Run Code Online (Sandbox Code Playgroud)
当我删除self = this; 来自NestedViewModel的行,我用this.number替换self.number,一切正常!我不清楚javascript在这里做了什么......有人对此有解释吗?一个解决方案?
我有以下代码:
#include "stdafx.h"
#include <map>
#include <string>
#include <iostream>
class MyObject
{
public:
MyObject()
: m_Items{ { 1, "one" },{ 2, "two" },{ 3, "three" } }
{}
RETURNTYPE GetStringIterator() const
{
IMPLEMENTATION
}
private:
std::map<int, std::string> m_Items;
};
int main()
{
MyObject o;
for (auto& s : o.GetStringIterator())
{
std::cout << s;
}
}
Run Code Online (Sandbox Code Playgroud)
什么应该RETURNTYPE
和IMPLEMENTATION
为了允许任何客户端MyObject
(在这种情况下是main()
函数)迭代m_Items
地图的值,而不复制任何数据?似乎这应该可以使用基于c ++ 11范围的循环和迭代器.但我无法弄清楚如何.
python ×6
c# ×2
ipython ×2
matplotlib ×2
pandas ×2
c++ ×1
c++11 ×1
envdte ×1
for-loop ×1
generator ×1
html ×1
javascript ×1
knockout.js ×1
python-3.x ×1
stereoscopy ×1
t4 ×1