我对Python很陌生,现在我正在努力为打印输出很好地格式化我的数据.
我有一个用于两个标题的列表,以及一个应该是表格内容的矩阵.像这样:
teams_list = ["Man Utd", "Man City", "T Hotspur"]
data = np.array([[1, 2, 1],
[0, 1, 0],
[2, 4, 2]])
Run Code Online (Sandbox Code Playgroud)
请注意,标题名称的长度不一定相同.但是,数据条目都是整数.
现在,我想以表格格式表示这个,如下所示:
Man Utd Man City T Hotspur
Man Utd 1 0 0
Man City 1 1 0
T Hotspur 0 1 2
Run Code Online (Sandbox Code Playgroud)
我有预感,必须有一个数据结构,但我找不到它.我已经尝试使用字典和格式化打印,我已尝试使用缩进的for循环,我已尝试打印为字符串.
我确信必须有一个非常简单的方法来做到这一点,但由于缺乏经验,我可能会错过它.
我认为我的问题应该很简单,但我无法在互联网上找到任何帮助.我是Python的新手,所以我可能会遗漏一些非常明显的东西.
我有一个数组,S,就像这样[x x x] (one-dimensional).我现在创建一个对角矩阵,sigma与np.diag(S)-到目前为止,那么好.现在,我想调整这个新的对角线数组的大小,以便我可以将它乘以我拥有的另一个数组.
import numpy as np
...
shape = np.shape((6, 6)) #This will be some pre-determined size
sigma = np.diag(S) #diagonalise the matrix - this works
my_sigma = sigma.resize(shape) #Resize the matrix and fill with zeros - returns "None" - why?
Run Code Online (Sandbox Code Playgroud)
但是,当我打印出内容时my_sigma,我明白了"None".有人可以指出我正确的方向,因为我无法想象这应该是如此复杂.
在此先感谢您的帮助!
卡斯帕
图形:
我有这个:
[x x x]
Run Code Online (Sandbox Code Playgroud)
我要这个:
[x 0 0]
[0 x 0]
[0 0 x]
[0 0 0]
[0 0 0]
[0 0 …Run Code Online (Sandbox Code Playgroud) 据我所知,我使用的是最新版本的MySQLWorkbench 5.2,但我根本无法更改字体.这是非常不方便的,因为默认字体非常小而且眼睛很刺耳.外观选项卡具有更改字体的选项,但实际上不能在那里进行更改,因为实际上无法对字段进行编辑.
有没有人知道这方面的方法?这似乎是一个常见的错误,但我无法在任何地方找到解决方案.
很抱歉,如果这是一个愚蠢的问题,但是有一种简单的方法可以在Python中使用matplotlib.pyplot绘制椭圆吗?我希望有类似matplotlib.pyplot.arrow的东西,但我找不到任何东西.
使用带有draw_artist或类似功能的matplotlib.patches是唯一的方法吗?我希望有一个更简单的方法,但文档没有提供太多帮助.
谢谢你的建议!
我将很快开始最后一年的工程项目,包括对在2D表面上移动的物体的实时跟踪.我的算法将使用特征提取来注册对象.
我正在尝试做一些研究来决定是否应该使用MATLAB或使用Python Numpy(数值Python).我考虑的一些因素:
1.)经验
我在两者方面都有合理的经验,但也许有更多使用Numpy的图像处理经验.但是,我总是发现MATLAB非常直观且易于掌握.
2.)实时能力
我的选择能够支持从外部摄像机实时获取视频数据,这一点非常重要.我发现MATLAB的这个链接显示了如何做到这一点.我确信Python可能也是如此,也许使用OpenCV库?
3.)表现
我听说过,虽然从未使用过,但MATLAB可以轻松地在多个内核之间分离独立的计算.我认为这会非常有用,我不确定Numpy是否也同样简单?
4.)价格
我知道有一个与MATLAB相关的成本,但我将在一所大学工作,因此可以访问完整的MATLAB而不需要任何成本,因此价格不是一个因素.
我非常感谢任何做过类似事情的人的任何意见,以及你的经历.谢谢!
当它们可能有不同的长度时,是否可以计算多个阵列的平均值?我正在使用numpy.所以我要说:
numpy.array([[1, 2, 3, 4, 8], [3, 4, 5, 6, 0]])
numpy.array([[5, 6, 7, 8, 7, 8], [7, 8, 9, 10, 11, 12]])
numpy.array([[1, 2, 3, 4], [5, 6, 7, 8]])
Run Code Online (Sandbox Code Playgroud)
现在我想计算平均值,但忽略了"缺失"的元素(当然,我不能只是附加零,因为这会弄乱平均值)
有没有办法在不迭代数组的情况下执行此操作?
PS.这些数组都是2-D,但总是具有相同数量的坐标.即第一个数组是5和5,第二个是6和6,第三个是4和4.
一个例子:
np.array([[1, 2], [3, 4]])
np.array([[1, 2, 3], [3, 4, 5]])
np.array([[7], [8]])
Run Code Online (Sandbox Code Playgroud)
这必须给
(1+1+7)/3 (2+2)/2 3/1
(3+3+8)/3 (4+4)/2 5/1
Run Code Online (Sandbox Code Playgroud)
并以图形方式:
[1, 2] [1, 2, 3] [7]
[3, 4] [3, 4, 5] [8]
Run Code Online (Sandbox Code Playgroud)
现在想象一下,这些二维数组放在彼此的顶部,坐标重叠,有助于该坐标的平均值.
我最近一直致力于解决对象跟踪问题.我需要做的是识别和跟踪可能在2D平面上移动的3D对象,即x和y的平移,以及z周围的旋转.要跟踪的对象是预先知道的,并且可以从中提取任何所需信息.还假设照明条件不会发生任何严重变化,并且背景将保持相对静止.要跟踪的对象通常不是单一颜色,因此不能选择按颜色跟踪.
我已经使用背景减法和动态模板匹配成功实现了跟踪多个2D对象的原型.我现在想扩展到跟踪3D对象,但到目前为止,我对我发现/实现的内容感到失望.我将列出我所做的一些尝试,希望有人可以解释一下.
1.)动态模板匹配:我希望用户在视频框架中选择对象,然后在对象周围定义搜索区域.然后在该区域内搜索该对象. 这个片段最初给了我这个想法.不幸的是,这对我来说并不适用,因为物体在旋转时会丢失(将其转回相机).我还尝试在找到对象时不断更新模板,但这会导致模板在目标对象被遮挡时成为另一个(外部)对象.
2.)Lucas-Kanade光流:我使用OpenCV的goodFeaturesToTrack来找到一些跟踪的好点,并尝试使用calcOpticalFlowPyrLK通过多个帧跟踪这些点.但是,这种算法的性能有点令人失望.我将它应用于牛津走廊数据集,但我最初检测到的点很快就会丢失.
3.)SURF:我试图用SURF检测特征,但问题在于很难将其应用于可能因不同视角而有很大差异的3D对象.我希望找到有关cv2的SURF的文档,因为这似乎提供了为SURF Feature提取器提供关键点的功能(可能来自goodFeaturesToTrack).不幸的是,我还没有办法做到这一点.关于SO的问题:OpenCV:从用户定义的关键点提取SURF功能
背景:我有一个固定的摄像头,我在台式电脑上完成所有处理.我在Windows 7上使用OpenCV的Python包装器和Eclipse的PyDev插件.
如果有人可以提出任何其他技术来尝试,甚至一些指针来提高已经提到的技术的性能,我将非常感激.
我想从我指定的关键点计算 SURF 特征。我正在使用 OpenCV 的 Python 包装器。以下是我尝试使用的代码,但我在任何地方都找不到工作示例。
surf = cv2.SURF()
keypoints, descriptors = surf.detect(np.asarray(image[:,:]),None,useProvidedKeypoints = True)
Run Code Online (Sandbox Code Playgroud)
如何指定此函数要使用的关键点?
类似的未回答的问题: 当 useProvidedKeypoints = true 时,cvExtractSURF 不起作用
我目前有一个用非托管C++编写的控制台应用程序,源代码由一个入口点main和一些其他函数组成.我需要从这段代码创建一个DLL,以便我可以从其他项目中使用它,特别是来自托管C++.(另一个问题:我是否必须为此目的编写一个包装类?)
据我所知,无论是托管/非托管C++还是创建DLL,我都遵循本教程并设法通过仅使用VS2010(无CMake)来启动并运行一个简单的Hello World DLL.
但是,我的这个项目有很多依赖项(例如Point Cloud Library),所以我通常使用CMake生成Visual Studio 2010解决方案,然后构建成可执行文件,如PCL教程中所述.如何使用CMake构建一个将构建到DLL中的VS2010项目?
总结一下我的问题:
额外信息:Windows 7,Visual Studio 2010 Ultimate,CMake 2.8.10.2
编辑: 我用你的线改变了CMake,它按预期工作.这是我添加到我的头文件后,我是在正确的轨道上?
MyCode.h
#ifdef MyLib_EXPORTS
#define API_DECL __declspec( dllexport )
#else
#define API_DECL __declspec( dllimport )
#include <iostream>
#include <pcl/...>
etc...
API_DECL void myFirstFunction();
API_DECL void mySecondFunction();
#endif
Run Code Online (Sandbox Code Playgroud)
MyCode.cpp:我没有对源文件进行任何更改,我应该做什么?
我正在学习如何在C中使用OpenMP,作为HelloWorld练习,我正在编写一个计算素数的程序.然后我将其并行如下:
int numprimes = 0;
#pragma omp parallel for reduction (+:numprimes)
for (i = 1; i <= n; i++)
{
if (is_prime(i) == true)
numprimes ++;
}
Run Code Online (Sandbox Code Playgroud)
我使用gcc -g -Wall -fopenmp -o primes primes.c -lm(我正在使用-lm的math.h函数)编译此代码.然后我运行这个代码Intel® Core™2 Duo CPU E8400 @ 3.00GHz × 2,并且正如预期的那样,性能优于串行程序.
然而,当我尝试在功能更强大的机器上运行它时,问题就出现了.(我也尝试手动设置要使用的线程数num_threads,但这并没有改变任何东西.)计算所有素数以便10 000 000给我以下时间(使用time):
8芯机:
real 0m8.230s
user 0m50.425s
sys 0m0.004s
Run Code Online (Sandbox Code Playgroud)
双核机器:
real 0m10.846s
user 0m17.233s
sys 0m0.004s
Run Code Online (Sandbox Code Playgroud)
这种模式继续计算更多的质数,具有更多核心的机器显示出轻微的性能提升,但没有像我期望的那样有更多的核心可用.(我希望核心数量增加4倍,这意味着运行时间减少了近4倍?)
计算素数最多50 000 000: …
这个问题来自我之前的问题:从非托管C++创建DLL,但您不必阅读它来理解这个新问题.
我现在有一个DLL,其中包含由几个函数组成的非托管C++代码,其中我只导出一个用于外部使用.接下来,我需要在托管C++项目中使用此DLL(使用公共语言运行时支持构建).到目前为止,我已经Additional Include Directories在Visual Studio 2010中设置了对现有非托管项目头文件的引用.
如果我现在尝试添加对DLL文件的引用:MyManagedProject > Properties > Common Properties > Add New Reference > Browse > MyUnmanagedDLL.dll,我收到错误Could not add a reference to file MyUnmanagedDLL.dll because it is neither a .NET assembly nor a registered ActiveX control. 但是,如果我采用前面提到的DLL并将其复制到与托管C++的可执行文件相同的文件夹中,一切正常.
我不确定这是否是正确的方法,因为它似乎是一个hackish解决方案.此外,这意味着每次我更改其源代码时都必须复制DLL.
总结一下我的问题:
MyUnmanagedDLL.dll.我还为此DLL创建了一个头文件.MyManagedProject.vxprojMyUnmanagedDLL.dll的MyManagedProject.vxproj?有没有正确的方法来引用它,或者我应该将它复制到同一目录MyManagedProject.exe?(这有效,但我不确定它的良好做法......)额外信息:Windows 7,Visual Studio 2010 Ultimate,CMake 2.8.10.2