我有一个看起来像这样的csv文件(实际文件有更多的列和行):
1,2,3,4,5
6,7,8,9,10
11,12,13,14,15
16
Run Code Online (Sandbox Code Playgroud)
假设该文件的名称是info.csv 如果我尝试使用导入它
data = numpy.genfromtxt('info.csv', delimiter = ',')
Run Code Online (Sandbox Code Playgroud)
然后我收到以下错误:
ValueError: Some errors were detected ! Line #4 (got 1 columns instead of 5)
Run Code Online (Sandbox Code Playgroud)
如果我用,
data = numpy.genfromtxt('info.csv', delimiter = ',', skip_footer = 1)
Run Code Online (Sandbox Code Playgroud)
将跳过包含数据16和数据的两行11, 12, 13, 14, 15.我不明白为什么11, 12, 13, 14, 15跳过这一行.我将非常感谢有关如何genfromtxt在上述文件中正确导入前三行的任何帮助.
谢谢
我有一个包含两个元素元组的列表,其中第一个元素是一个字符串(某个参数的名称),第二个元素是一个float(该参数的值).例如,
thelist = [('costperunit', 200), ('profit', 10000), ('fixedcost', 5000),
('numpeople':300)]
Run Code Online (Sandbox Code Playgroud)
还有更多这样的元组,名称在实际案例中有所不同.我想将这些作为键:值对添加到mongoDB数据库.这是我想要添加它的方式.
db.collection.insert( {paramvalues: {'costperunit':200, 'profit':10000,
'fixedcost': 5000, 'numpeople': 300} } )
Run Code Online (Sandbox Code Playgroud)
一种方法是:
dictform = dict(thelist)
db.collection.insert( {paramvalues: dictform} )
Run Code Online (Sandbox Code Playgroud)
但是,这不会确保参数名称和值dict的顺序会改变顺序.
我试过了
from collections import OrderedDict
dictform = OrderedDict(thelist)
db.collection.insert( {paramvalues: dictform} )
Run Code Online (Sandbox Code Playgroud)
这将维护参数名称和值的原始顺序,但是,将参数名称和值作为列表列表插入.
我是mongoDB的新手,并试图学习它.在Python或mongoDB中是否有一个可以实现我想要的技巧?我想将paramvaluesMongodb数据库中的键值作为字典(或Javascript对象)的原因是我可以使用某个参数的值来过滤结果.例如,我可以这样做:
db.collection.find( {'paramvalues.costperunit': 200} )
Run Code Online (Sandbox Code Playgroud)
如果你确定无法做到这一点,如果你让我知道,我将不胜感激.
谢谢.
我是R的新手,刚学会编写简单的函数.有人可以帮助我理解为什么以下功能不起作用.
fboxplot <- function(mydataframe, varx, vary)
{
p <- ggplot(data=mydataframe, aes(x=varx, y=vary))
p + geom_boxplot()
}
col1 = factor(rep(1:3, 3))
col2 = rnorm(9)
col3 = c(rep(10,5), rep(20,4))
df = data.frame(col1 = col1, col2 = col2, col3 = col3)
Run Code Online (Sandbox Code Playgroud)
现在,如果我调用fboxplot函数
fboxplot(df, col1, col2)
Run Code Online (Sandbox Code Playgroud)
我收到了错误Error in eval(expr, envir, enclos): object varx not found.我也试过了
fboxplot(df, varx = col1, vary = col2)
Run Code Online (Sandbox Code Playgroud)
这给出了同样的错误.我哪里错了?
谢谢你的帮助.
假设我有以下两个数组:
a = array([(1, 'L', 74.423088306605), (5, 'H', 128.05441039929008),
(2, 'L', 68.0581377353869), (0, 'H', 88.15726964130869),
(4, 'L', 97.4501582588212), (3, 'H', 92.98550136344437),
(7, 'L', 87.75945631669309), (6, 'L', 90.43196739694255),
(8, 'H', 111.13662092749307), (15, 'H', 91.44444608631304),
(10, 'L', 85.43615908319185), (11, 'L', 78.11685661303494),
(13, 'H', 108.2841293816308), (17, 'L', 74.43917911042259),
(14, 'H', 64.41057325770373), (9, 'L', 27.407214746467943),
(16, 'H', 81.50506434964355), (12, 'H', 97.79700070323196),
(19, 'L', 51.139258140713025), (18, 'H', 118.34835768605957)],
dtype=[('id', '<i4'), ('name', 'S1'), ('value', '<f8')])
b = array([ 0, 3, 5, 8, 12, 13, 14, 15, …Run Code Online (Sandbox Code Playgroud) 在回答我的另一个问题时,有人建议我在代码中避免使用长行并在编写Python代码时使用PEP-8规则.其中一条PEP-8规则建议避免使用长度超过80个字符的行.我更改了很多代码以符合此要求而没有任何问题.但是,以下面显示的方式更改以下行会破坏代码.有什么想法吗?它是否与return命令后面的内容必须在一行中这一事实有关?
该行超过80个字符:
def __str__(self):
return "Car Type \n"+"mpg: %.1f \n" % self.mpg + "hp: %.2f \n" %(self.hp) + "pc: %i \n" %self.pc + "unit cost: $%.2f \n" %(self.cost) + "price: $%.2f "%(self.price)
Run Code Online (Sandbox Code Playgroud)
通过使用Enter密钥并Spaces根据需要更改了该行:
def __str__(self):
return "Car Type \n"+"mpg: %.1f \n" % self.mpg +
"hp: %.2f \n" %(self.hp) + "pc: %i \n" %self.pc +
"unit cost: $%.2f \n" %(self.cost) + "price: $%.2f "%(self.price)
Run Code Online (Sandbox Code Playgroud) 我在Mac OS X 10.5.8上工作.我正在尝试学习emacs.我是新手,今天尝试从emacs中输入shell命令.我进去了pdflatex filename.但是,它给我一个错误说
/bin/bash: pdflatex: command not found
Run Code Online (Sandbox Code Playgroud)
我安装了LaTeX,并且pdflatex可以在终端的命令行中正常工作.
对于lsd我在.bash_profile文件中定义的命令,我收到类似的错误.这在终端的命令行上也能正常工作.
该命令ls在emacs shell中正常工作.
有没有人知道可能会发生什么.
我如何让emacs识别终端命令行上正常工作的所有命令.无论如何我可以使emacs shell和终端命令行使用的环境相同吗?如果是这样,你有什么理由建议不要这样做吗?我对bash和emacs都知之甚少.
非常感谢你.
我试图理解python中浅拷贝和深拷贝之间的区别.我在这里阅读了很多帖子,他们一直很有帮助.但是,我仍然不太了解这种差异.有人可以解释下面结果的原因.评论中指出了我不理解的结果.
非常感谢.
import copy
import random
class understand_copy(object):
def __init__(self):
self.listofvalues = [4, 5]
def set_listofvalues(self, pos, value):
self.listofvalues[pos] = value
ins = understand_copy()
newins = copy.copy(ins)
newins.set_listofvalues(1,3)
print "ins = ", ins.listofvalues
print "in newins", newins.listofvalues
# Gives the following output as I would expect based on the explanations.
# prints ins = [4, 3]
# prints newins = [4, 3]
newins.listofvalues.append(5)
print "ins =", ins.listofvalues
print "newins =", newins.listofvalues
# Gives the following output as I would expect …Run Code Online (Sandbox Code Playgroud) 可能重复:
用于查看数据框中是否存在行的现有函数?
假设我在R中有以下数据框.
df = data.frame('a'=c(1:3), 'b'=c(4:6))
Run Code Online (Sandbox Code Playgroud)
该数据框包含三行:(1,4), (2,5) and (3,6).假设我不知道哪些行df包含并想检查行(1,4)是否属于它,我该如何检查?
我的实际案例涉及27个参数值的比较.有没有一种解决方案可以在不输入每个参数名称的情况下完成此操作?谢谢!
我想这样做的原因是我有一个R数据集masterdata,其中包含模拟数据.我想用新数据更新这个数据集,因为我使用不同的参数组合进行了额外的模拟运行.但是,我可能会忘记我已经为某个参数组合运行了模拟并且可能再次运行它,在这种情况下,masterdata将使用重复值进行扩展.我以后可以删除这些重复值,但如果值重复,我不希望更新数据集的整个过程.为此,我需要检查模拟运行中的数据是否已存在于masterdata.如果我知道如何检查给定行是否属于该行,我可以这样做masterdata.
谢谢.
请参阅下面的代码.我试图在路径周围绘制一个圆圈(由Raphael.js创始人Dimitry制作的图标),然后用一种颜色填充圆圈.然而,这是在路径的顶部.如果我可以先绘制实心圆然后绘制路径,这将得到解决.但是我需要引用路径,因为我需要找到它的中心,以便绘制圆圈.任何人都可以建议如何做到这一点?我的代码如下.
谢谢.
<script>
var myVar = {
s: 1,
pw: 850,
ph: 450
}
</script>
<script>
var paper = new Raphael('figSellerBuyer', myVar.pw * myVar.s, myVar.ph * myVar.s);
var market = paper.path(paths.marketBoundary);
market.attr({fill: "rgb(75,245,75)", stroke: "None"});
var humanIcon = paper.path("M21.021,16.349c-0.611-1.104-1.359-1.998-2.109-2.623c-0.875,0.641-1.941,1.031-3.103,1.031c-1.164,0-2.231-0.391-3.105-1.031c-0.75,0.625-1.498,1.519-2.111,2.623c-1.422,2.563-1.578,5.192-0.35,5.874c0.55,0.307,1.127,0.078,1.723-0.496c-0.105,0.582-0.166,1.213-0.166,1.873c0,2.932,1.139,5.307,2.543,5.307c0.846,0,1.265-0.865,1.466-2.189c0.201,1.324,0.62,2.189,1.463,2.189c1.406,0,2.545-2.375,2.545-5.307c0-0.66-0.061-1.291-0.168-1.873c0.598,0.574,1.174,0.803,1.725,0.496C22.602,21.541,22.443,18.912,21.021,16.349zM15.808,13.757c2.362,0,4.278-1.916,4.278-4.279s-1.916-4.279-4.278-4.279c-2.363,0-4.28,1.916-4.28,4.279S13.445,13.757,15.808,13.757z")
humanIcon.attr({fill: "rgb(75,75,75)"}).scale(2.5,2.5);
humanIcon.translate(40,40);
var bbox = humanIcon.getBBox();
var xcenter = Math.round(bbox.x + bbox.width/2.0);
var ycenter = Math.round(bbox.y + bbox.height/2.0);
var circle = paper.circle(xcenter, ycenter, 40);
circle.attr({fill:"white"});
</script>
Run Code Online (Sandbox Code Playgroud) 请考虑以下示例代码.该示例仅用于突出显示map和之间的不同功能itertools.imap.我真正想做的事情不能用列表理解来完成,因为在我真正的问题中我不是创建一个列表而是用一个小数组填充一个更大的numpy数组.因此,为了回应下面的代码,请不要建议:[f(x) for x in range(3)]
例:
g = []
def f(x):
g.append(x)
Run Code Online (Sandbox Code Playgroud)
我得到的结果map和itertools.map:
map(f, range(3)) # Results in g = [0,1,2]
itertools.imap(f, range(3)) # Does not change g
Run Code Online (Sandbox Code Playgroud)
我希望g由map函数完成更改.但是,我听说过map(或者确实)会像itertools.imapPython 3 一样
.即使我使用的是Python 2.7,我也想学习使用迭代器版本的地图的正确方法.我如何使用itertools.imap以获得与我相同的结果map?
我可以:
b = itertools.imap(f, range(3))
list(b) # This gives g = [0,1,2] if starting with an empty g.
Run Code Online (Sandbox Code Playgroud)
这是正确的方法,还是有更好的方法?
提前致谢.