我有以下格式的csv文件,
,col1,col2,col3
row1,23,42,77
row2,25,39,87
row3,48,67,53
row4,14,48,66
Run Code Online (Sandbox Code Playgroud)
我需要把它读成两个键的字典,这样
dict1['row1']['col2'] = 42
dict1['row4']['col3'] = 66
Run Code Online (Sandbox Code Playgroud)
如果我尝试使用csv.DictReader和默认选项
with open(filePath, "rb" ) as theFile:
reader = csv.DictReader(theFile, delimiter=',')
for line in reader:
print line
Run Code Online (Sandbox Code Playgroud)
我得到以下输出
{'': 'row1', 'col2': '42', 'col3': '77', 'col1': '23'}
{'': 'row2', 'col2': '39', 'col3': '87', 'col1': '25'}
{'': 'row3', 'col2': '67', 'col3': '53', 'col1': '48'}
{'': 'row4', 'col2': '48', 'col3': '66', 'col1': '14'}
Run Code Online (Sandbox Code Playgroud)
我不知道如何处理这个输出来创建我感兴趣的字典类型.
为了完整起见,如果你能解决如何将字典写回到具有上述格式的csv文件中,它也会有所帮助
我已经安装并配置了ein(emacs ipython notebook)来在我的本地linux/mac机器上工作.但是,我想使用ein在远程服务器上打开ipython笔记本并在ein中运行它们.这是否可能,如果是这样,有人可以告诉我如何做到这一点?
我在emacs中使用helm-mode打开文件。但是,当我尝试通过鼠标左键单击并按住以将其粘贴到终端中来复制文件的路径(例如/home/user1/Documents/file1.txt)时,我收到一条消息,提示
<down-mouse-1> is undefined
我猜helm不支持此处描述的鼠标操作,在这种情况下,如何从emacs复制文件路径(以helm模式)以将其粘贴到终端中
我有一个列表列表,我需要迭代3次(3个嵌套循环)
rangeList = [[-0.18,0.18],[0.14,0.52],[0.48,0.85]]
Run Code Online (Sandbox Code Playgroud)
我可以使用如下产品的产品实现这一点
from itertools import product
for val in product(product(rangeList,rangeList),rangeList):
print val
Run Code Online (Sandbox Code Playgroud)
输出如下
(([-0.18, 0.18], [-0.18, 0.18]), [-0.18, 0.18])
(([-0.18, 0.18], [-0.18, 0.18]), [0.14, 0.52])
(([-0.18, 0.18], [-0.18, 0.18]), [0.48, 0.85])
(([-0.18, 0.18], [0.14, 0.52]), [-0.18, 0.18])
Run Code Online (Sandbox Code Playgroud)
它是一个元组元组.我的问题是
val
成3个独立的变量说xRange
,yRange
并且
zRange
,每个拥有发言权的列表值[-0.18, 0.18]
或[0.14, 0.52]
等.我的动机是将有效的MPI信息从python传递到通过ctypes调用的C函数.我在python中使用mpi4py进行MPI绑定.我想通过一个用C语言编写并通过python中的ctypes调用的简单示例MPI代码来学习它.我详细介绍了在下面运行时获得的步骤和错误.
C代码 [ passMpi4Py.c ]
#include <stdio.h>
#include <mpi.h>
void sayhello(MPI_Comm comm)
{
int size, rank;
MPI_Comm_size(comm, &size);
MPI_Comm_rank(comm, &rank);
printf("Hello, World! "
"I am process %d of %d.\n",
rank, size);
}
Run Code Online (Sandbox Code Playgroud)
我用gcc/openmpi-1.6编译了上面的c代码如下:
mpicc -shared -Wl,-soname,passMpi4Py -o passMpi4Py.so -fPIC passMpi4Py.c
Python包装器 [ passMpi4PyWrapper.py ]
import ctypes
from mpi4py import MPI
testlib = ctypes.CDLL('path-to-file/passMpi4Py/passMpi4Py.so')
testlib.sayhello(MPI.COMM_WORLD)
Run Code Online (Sandbox Code Playgroud)
当我尝试使用以上代码运行时
mpirun -np 4 python passMpi4PyWrapper.py
我收到以下错误
Traceback (most recent call last):
Traceback (most recent call last):
File "passMpi4PyWrapper.py", line 5, in <module>
Traceback (most recent …
Run Code Online (Sandbox Code Playgroud) 我有一个python中的列表列表,我需要找到每个子列表发生了多少次.这是一个样本,
from collections import Counter
list1 = [[ 1., 4., 2.5], [ 1., 2.66666667, 1.33333333],
[ 1., 2., 2.], [ 1., 2.66666667, 1.33333333], [ 1., 4., 2.5],
[ 1., 2.66666667, 1.33333333]]
c = Counter(x for x in iter(list1))
print c
Run Code Online (Sandbox Code Playgroud)
我上面的代码将工作,如果列表的元素是可散列的(比如int),但在这种情况下,它们是列表,我得到一个错误
TypeError: unhashable type: 'list'
Run Code Online (Sandbox Code Playgroud)
我如何计算这些列表,以便得到类似的东西
[ 1., 2.66666667, 1.33333333], 3
[ 1., 4., 2.5], 2
[ 1., 2., 2.], 1
Run Code Online (Sandbox Code Playgroud) 我有一个numpy数组,我需要绘制为热图.numpy数组还包含我需要从绘图中排除的NaN值.我在其他帖子中被告知numpy会自动掩盖情节中的NaN值,但它不知何故对我不起作用.这是一个示例代码
column_labels = list('ABCDEFGH')
row_labels = list('WXYZ')
fig, ax = plt.subplots()
data = np.array([[ 0.96753494, 0.52349944, 0.0254628 , 0.5104103 ],
[ 0.07320069, 0.91278731, 0.97094436, 0.70533351],
[ 0.30162006, 0.49068337, 0.41837729, 0.71139215],
[ 0.19786101, 0.15882713, 0.59028841, 0.06242765],
[ 0.51505872, 0.07798389, 0.58790067, 0.44782683],
[ 0.68975694, 0.53535385, 0.15696023, 0.35641951],
[ 0.66481995, 0.03576846, 0.9623601 , 0.96006395],
[ 0.45865404, 0.50433582, 0.18182575, 0.35126449],])
data[3,:] = np.nan
heatmap = ax.pcolor(data, cmap=plt.cm.seismic)
fig.colorbar(heatmap)
# put the major ticks at the middle of each cell
ax.set_xticks(np.arange(data.shape[1])+0.5, minor=False)
ax.set_yticks(np.arange(data.shape[0])+0.5, minor=False)
# …
Run Code Online (Sandbox Code Playgroud) 在Python中,我们可以使用列表中的唯一项set(list)
.但是,这样做会破坏值在原始列表中出现的顺序.是否有一种优雅的方式来获取列表中显示的顺序中的唯一项目.
我正在尝试用C++学习指针算术的一些操作.下面写的代码引发了一个分段错误.我无法理解程序如何尝试访问未分配的内存以导致分段错误.
C++代码(myarray.cc)
#include<iostream>
using namespace std;
int main(int argc, char** argv)
{
int * pointer_s3_1_a;
int * pointer_s3_1_a2;
int value_s3_1_a, value_s3_1_a2 ;
*pointer_s3_1_a=100;
cout<<"pointer_s3_1_a, *pointer_s3_1_a "<<pointer_s3_1_a<<' '<<*pointer_s3_1_a<<endl;
value_s3_1_a=*pointer_s3_1_a++;
cout<<"value_s3_1_a, pointer_s3_1_a, *pointer_s3_1_a "<<
value_s3_1_a<<' '<<pointer_s3_1_a<<' '<<*pointer_s3_1_a<<endl;
cout<<"pointer_s3_1_a2, *pointer_s3_1_a2 "<<pointer_s3_1_a2<<' '<<*pointer_s3_1_a2<<endl;
*pointer_s3_1_a2=100; //Runtime error |** Segmentation fault (core dumped) **|
return 0;
}
Run Code Online (Sandbox Code Playgroud)
我正在使用g ++编译器在Ubuntu 12.04中运行该程序.在终端上运行apt-cache policy g ++给了我以下输出.
g ++:已安装:4:4.6.3-1ubuntu5候选:4:4.6.3-1ubuntu5
版本表: * 4:4.6.3-1ubuntu5 0 500 http://archive.ubuntu.com/ubuntu/ precise/main i386包100/var/lib/dpkg/status
python ×7
emacs ×2
list ×2
c++ ×1
copy-paste ×1
counter ×1
csv ×1
ctypes ×1
dictionary ×1
emacs-helm ×1
flatten ×1
g++ ×1
heatmap ×1
ipython ×1
matplotlib ×1
mpi ×1
nan ×1
numpy ×1
pointers ×1
python-2.7 ×1
set ×1
unique ×1