我试图用散点图来绘制一些数据.我的代码是
import matplotlib.pyplot as plt
import matplotlib as mpl
import numpy as np
from scipy.interpolate import griddata
data = np.loadtxt('file1.txt')
x = data[:,0]
y = data[:,1]
z = data[:,2]
plt.scatter(x, y, c=z, s=100, cmap=mpl.cm.spectral)
cbar=plt.colorbar()
s=18
plt.ylabel(r"$a_v$", size=s)
plt.xlabel(r"$a_{\rm min}$", size=s)
plt.xlim([x.min(),x.max()])
plt.ylim([y.min(),y.max()])
plt.show()
Run Code Online (Sandbox Code Playgroud)
结果是

现在我想出了一些尝试用一些数据来表达的想法,因为我不喜欢分散的圈子.所以我尝试了这个
from matplotlib.mlab import griddata
import matplotlib.pyplot as plt
data = np.loadtxt('file1.txt')
x = data[:,0]
y = data[:,1]
z = data[:,2]
N = 30j
extent = (min(x), max(x), min(y), max(y))
xs,ys = np.mgrid[extent[0]:extent[1]:N, extent[2]:extent[3]:N]
resampled …Run Code Online (Sandbox Code Playgroud) 这个问题是与此相关的一个.
我想知道的是如何将建议的解决方案应用于一堆数据(4列),例如:
0.1 0 0.1 2.0
0.1 0 1.1 -0.498121712998
0.1 0 2.1 -0.49973005075
0.1 0 3.1 -0.499916082038
0.1 0 4.1 -0.499963726586
0.1 1 0.1 -0.0181405895692
0.1 1 1.1 -0.490774988618
0.1 1 2.1 -0.498653742846
0.1 1 3.1 -0.499580747953
0.1 1 4.1 -0.499818696063
0.1 2 0.1 -0.0107079119572
0.1 2 1.1 -0.483641823093
0.1 2 2.1 -0.497582061233
0.1 2 3.1 -0.499245863438
0.1 2 4.1 -0.499673749657
0.1 3 0.1 -0.0075248589089
0.1 3 1.1 -0.476713038166
0.1 3 2.1 -0.49651497615
0.1 3 3.1 -0.498911427589 …Run Code Online (Sandbox Code Playgroud) 我以前读过我的数据numpy.loadtxt().然而,最近我在SO中发现,这pandas.read_csv()要快得多.
要阅读这些数据我使用:
pd.read_csv(filename, sep=' ',header=None)
Run Code Online (Sandbox Code Playgroud)
我现在遇到的问题是,在我的情况下,分隔符可以从一个空格,x空格到甚至一个标签不同.
这里我的数据如何:
56.00 101.85 52.40 101.85 56.000000 101.850000 1
56.00 100.74 50.60 100.74 56.000000 100.740000 2
56.00 100.74 52.10 100.74 56.000000 100.740000 3
56.00 102.96 52.40 102.96 56.000000 102.960000 4
56.00 100.74 55.40 100.74 56.000000 100.740000 5
Run Code Online (Sandbox Code Playgroud)
这导致了如下结果:
0 1 2 3 4 5 6 7 8
0 56 NaN NaN 101.85 52.4 101.85 56 101.85 1
1 56 100.74 50.6 100.74 56.0 100.74 2 NaN NaN …Run Code Online (Sandbox Code Playgroud) 从文档中尝试此示例
writer = ExcelWriter('output.xlsx')
df1.to_excel(writer,'Sheet1')
df2.to_excel(writer,'Sheet2')
writer.save()
Run Code Online (Sandbox Code Playgroud)
我发现我无法写入带有错误的excel文件
TypeError: copy() got an unexpected keyword argument 'font'
Run Code Online (Sandbox Code Playgroud)
我在Mac专业版上使用Panda 0.16.
编辑:写入xls文件工作得很好.我不坚持使用xlsx文件,只是想知道为什么它不起作用.
我从文件中读取与loadtxt这样的
data = loadtxt(filename) # id x1 y1 x2 y2
Run Code Online (Sandbox Code Playgroud)
data 看起来像
array([[ 4. , 104.442848, -130.422137, 104.442848, 130.422137],
[ 5. , 1. , 2. , 3. , 4. ]])
Run Code Online (Sandbox Code Playgroud)
然后我可以减少data属于某个id数字的行:
d = data [ data[:,0] == id]
Run Code Online (Sandbox Code Playgroud)
这里的问题是数据只包含一行.
所以我的问题是如何检查我的数组的二维性data?
我试过检查
data.shape[0] # num of lines
Run Code Online (Sandbox Code Playgroud)
但对于单行我会得到类似的东西(n, ),所以这不会奏效.
任何想法如何正确地做到这一点?
好吧,近似一个带有多边形的圆圈和毕达哥拉斯的故事可能是众所周知的.但另一种方式呢?
我有一些多边形,实际上应该是圆圈.但是,由于测量误差,它们不是.所以,我正在寻找的是最能"近似"给定多边形的圆.
在下图中,我们可以看到两个不同的例子.

我的第一个Ansatz是找到点到中心的最大距离以及最小值.我们正在寻找的圈子可能介于两者之间.
这个问题有没有算法?
我有一个列表,就像l=['a', 'b', 'c']
我想要一个像'abc'这样的字符串.所以实际上结果是l[0]+l[1]+l[2],也可以写成
s = ''
for i in l:
s += i
Run Code Online (Sandbox Code Playgroud)
有没有办法更优雅地做到这一点?
我有一个包含多个文件(~100)的研究项目.多年来编写的代码没有任何特定的风格.每个开发人员(主要是来自,编码和离开的硕士生)都使用他们自己的"风格",如果有的话.
现在,我正在尝试维护代码,以使加入我们的新人遵循某些规则.我发现Google发布了一些样式指南.幸运的是,他们还发布了一个易于使用的python脚本.
问题是,脚本为我提供了每个文件的愚蠢错误
Missing space after , [whitespace/comma] [3]
Run Code Online (Sandbox Code Playgroud)
要么
Missing space before { [whitespace/braces] [5]
Run Code Online (Sandbox Code Playgroud)
我的问题是:在某种程度上可以自动化纠正这种"错误"吗?这意味着在文件上运行脚本会自动消除所有这些错误.
我的代码中包含以下代码 main.cpp
std::thread t1(&AgentsSourcesManager::Run, &sim.GetAgentSrcManager());
doSomething(); // in the main Thread
t1.join();
Run Code Online (Sandbox Code Playgroud)
我期待t1立即开始并沿主线开始.然而,这种情况并非如此.我测量我的程序的执行时间,重复这100次并制作一些图.
请参见下图中的峰值.
现在如果我在创建之后稍等一下 t1
std::this_thread::sleep_for(std::chrono::milliseconds(100));
Run Code Online (Sandbox Code Playgroud)
我得到了更好的结果.见下图.
(仍然有一个高峰,但很好..)
显然我的问题是:
好吧,根据我现在所理解的评论,可能会有一些调度程序魔术正在进行中.
#include <thread>
#include <chrono>
#include <iostream>
#include <pthread.h>
#include <functional>
int main() {
float x = 0; float y = 0;
std::chrono::time_point<std::chrono::system_clock> start, stop;
start= std::chrono::system_clock::now();
auto Thread = std::thread([](){std::cout<<"Excuting thread"<<std::endl;});
stop = std::chrono::system_clock::now();
for(int i = 0 ; i<10000 ; i++)
y += x*x*x*x*x;
std::this_thread::sleep_for(std::chrono::milliseconds(100));
Thread.join();
std::chrono::duration<double> elapsed_time = stop - start; …Run Code Online (Sandbox Code Playgroud) 我有以下数据
1.105 0.919 0.842 0.715 0.704 0.752 0.827 1.049 0.584
0.998 0.931 0.816 0.787 0.803 0.856 0.782 0.872 0.710
1.268 1.189 1.036 0.984 0.847 0.948 1.083 0.864 0.792
Run Code Online (Sandbox Code Playgroud)
我用它来绘制imshow()
结果如下:

这是我的代码:
from numpy import*
import matplotlib.cm as cm
import matplotlib.mlab as mlab
import matplotlib.pyplot as plt
from mpl_toolkits.axes_grid1 import make_axes_locatable
shape=(3,9)
velocity=zeros(shape)
fig = plt.figure(figsize=(16, 12), dpi=100)
ax1 = fig.add_subplot(111,aspect='equal')
# ax1.set_yticks([int(100*j) for j in range(0,4)])
ax1.set_yticks([int(j) for j in range(0,4)])
ax1.set_xticks([int(j) for j in range(-4,5)])
for label in …Run Code Online (Sandbox Code Playgroud)