我有一个问题,使用以下代码将excel xldate转换为python datetime.这是转换的正确方法吗?
import xlrd
from datetime import datetime
book = xlrd.open_workbook("a.xls")
sh = book.sheet_by_index(0)
for rx in range(1,sh.nrows):
a = sh.row(rx)
print a
year, month, day, hour, minute = xlrd.xldate_as_tuple(a[0], book.datemode)
py_date = datetime.datetime(year, month, day, hour, minute)
Run Code Online (Sandbox Code Playgroud)
a打印 - >
[xldate:40544.0, number:0.0, number:75.49847785316135, number:75.6401124106301]
Run Code Online (Sandbox Code Playgroud)
显示以下错误
year, month, day, hour, minute = xlrd.xldate_as_tuple(a[0], book.datemode)
File "C:\Anaconda\Lib\site-packages\xlrd\xldate.py", line 67, in xldate_as_tuple
xldays = int(xldate)
TypeError: int() argument must be a string or a number, not 'Cell'
Run Code Online (Sandbox Code Playgroud) 我想绘制一个散点图,y 轴自定义为步长 0.2,范围为 0 - 2.6,x 轴可以自动定义。我尝试了以下,但它不起作用。我可以知道我应该如何正确设置参数吗?
# Read data
pt.n <- read.table("p0_n300m20r1c1_regression.txt", header=T)
# auto-scale
# plot(pt.n$maee~pt.n$idx, main="P2PSim Seq#1,300n,20%,1r,Corrective", ylab="MAEE", xlab="Seq #")
# customize
ylabel <- c(0.2, 0.4, 0.6, 0.8, 1.0, 1.2, 1.4, 1.6, 1.8, 2.0, 2.2, 2.4, 2.6)
y_range <- range(0, ylabel)
plot(pt.n$maee~pt.n$idx, main="P2PSim Seq#3,300n,20%,1r,Corrective", ylab="MAEE", xlab="Seq #", ylim=y_range, axes=FALSE, ann=FALSE)
axis(1, at=0:6, lab=c(0,50,100,150,200,250,300))
axis(2, las=1, at=0.2*0:y_range[1])
box()
Run Code Online (Sandbox Code Playgroud) 我需要将win32api用于rpy2.所以我去http://www.lfd.uci.edu/~gohlke/pythonlibs/#pywin32尝试用pip安装它.但是,我有以下错误.如何克服此权限被拒绝的问题?
C:\Anaconda\Scripts\pip-script.py run on 07/09/15 16:48:30
Unpacking c:\users\myname\downloads\pywin32-219-cp34-none-win_amd64.whl
Installing collected packages: pywin32
Found existing installation: pywin32 218.4
Uninstalling pywin32:
Removing file or directory c:\anaconda\lib\site-packages\pywin32-218.4-py2.7.egg-info
Successfully uninstalled pywin32
Rolling back uninstall of pywin32
Replacing c:\anaconda\lib\site-packages\pywin32-218.4-py2.7.egg-info
Cleaning up...
Exception:
Traceback (most recent call last):
File "C:\Anaconda\lib\site-packages\pip\basecommand.py", line 134, in main
status = self.run(options, args)
File "C:\Anaconda\lib\site-packages\pip\commands\install.py", line 241, in run
requirement_set.install(install_options, global_options, root=options.root_path)
File "C:\Anaconda\lib\site-packages\pip\req.py", line 1298, in install
requirement.install(install_options, global_options, *args, **kwargs)
File "C:\Anaconda\lib\site-packages\pip\req.py", line 595, in install
self.move_wheel_files(self.source_dir) …
Run Code Online (Sandbox Code Playgroud) 我必须尝试从基于非类的编码风格转变为基于类的编码风格,但面临一个问题.optimize()函数采用回调函数mycallback().代码在非基于类的方法中完美地运行,但是当我将它移动到基于类的方法时,我得到一个错误"mycallback()正好接受3个参数(给定1个)".
在基于类的方法中传递回调函数的正确方法是什么?
(A)非基于类别的方法:
def mycallback(model, where):
pass
model = Model()
model.optimize(mycallback)
Run Code Online (Sandbox Code Playgroud)
(B)基于类别的方法:
class A:
def __init__(self):
self.model = Model()
def solve(self):
# Try method 1:
self.model.optimize(self.mycallback()) <--- Error: mycallback() takes exactly 3 arguments (1 given)
# Try method 2:
# self.model.optimize(self.mycallback) <--- Error: Callback argument must be a function
def mycallback(self, model, where):
pass
Run Code Online (Sandbox Code Playgroud)
虽然这是一个关于将回调函数传递给Gurobi(一个优化求解器)内置函数的问题,但我认为这是一个关于如何将类中定义的回调函数传递给Python中的另一个函数的更一般的问题.
方法2的错误:
self.model.optimize(self.mycallback)
File "model.pxi", line 458, in gurobipy.Model.optimize (../../src/python/gurobipy.c:34263)
gurobipy.GurobiError: Callback argument must be a function
Run Code Online (Sandbox Code Playgroud)
看起来很可能是Gurobi API问题.不知道是否有任何Gurobi开发者会做出回应.
我正在使用Code :: Blocks 10.05和mingw.似乎编译器没有识别限制限定符并在'src'之前返回"error:expected';',','或')'.我是否需要传递任何编译器选项才能正确编译?
int inet_pton4 (const char *restrict src, unsigned char *restrict dst)
Run Code Online (Sandbox Code Playgroud)
p/s:似乎mingw不支持inet_pton4,所以我尝试将开源版本集成到我的代码中.
我想用项目索引打印列表项,如
0: [('idx', 10), ('degree', 0)]
1: [('idx', 20), ('degree', 0)]
Run Code Online (Sandbox Code Playgroud)
根据下面的代码,如何将'0:'附加为整数+字符串+列表项?
import logging
class Node(object):
__slots__= "idx", "degree"
def __init__(self, idx, degree):
self.idx = idx
self.degree = 0
def items(self):
"dict style items"
return [
(field_name, getattr(self, field_name))
for field_name in self.__slots__]
def funcA():
a = []
a.append(Node(10, 0))
a.append(Node(20, 0))
for i in range(0, len(a)):
logging.debug(a[i].items())
if __name__ == '__main__':
logging.basicConfig(level=logging.DEBUG)
funcA()
Run Code Online (Sandbox Code Playgroud)
目前,结果是
DEBUG:root:[('idx', 10), ('degree', 0)]
DEBUG:root:[('idx', 20), ('degree', 0)]
Run Code Online (Sandbox Code Playgroud)
期待
DEBUG:root:0:[('idx', 10), ('degree', 0)]
DEBUG:root:1:[('idx', 20), …
Run Code Online (Sandbox Code Playgroud) 给定一个列表数组a,另一个列表b和d.我如何检查是否在列表元素一个中存在b(或另一个例子,在d)?我知道我可以使用元素的 for循环来检查每个元素是否都是b/d,但有没有API可以快速完成?
a = [[1,4], [17,33,2],[2,33]]
b = [1,4,5,6]
c = [[1,4]]
d = [2,33]
e = [[17,33,2],[2,33]]
Run Code Online (Sandbox Code Playgroud)
让我们这样说,给出列表a和b,如何有效地编写下面的循环?让我们使用列表理解在一行中说.
newls = []
for sublist in a:
newls.append(list(set(sublist).intersection(set(b))))
Run Code Online (Sandbox Code Playgroud) 我想在熊猫中串联两列。每列均包含1x4元素的浮点列表。我想合并两列,以便输出是1x8的向量。下面显示了数据框的摘要
ue,bs
"[1.27932459e-01 7.83234197e-02 3.24789420e-02 4.34971932e-01]","[2.97806183e-01 2.32453145e-01 3.10236304e-01 1.69975788e-02]"
"[0.05627587 0.4113416 0.02160842 0.20420576]","[1.64862491e-01 1.35556330e-01 2.59050065e-02 1.42498115e-02]"
Run Code Online (Sandbox Code Playgroud)
要连接两列,请执行以下操作:
df['ue_bs'] = zip(df_join['ue'], df_join['bs'])
Run Code Online (Sandbox Code Playgroud)
这样,我得到了一个新列'ue_bs',其中包含第一行的内容df['ue_bs']
:
(array([1.27932459e-01, 7.83234197e-02, 3.24789420e-02, 4.34971932e-01]),
array([2.97806183e-01, 2.32453145e-01, 3.10236304e-01, 1.69975788e-02]))
Run Code Online (Sandbox Code Playgroud)
但是,它们仍然是两个数组。为了合并它们,我这样做如下:
a = df['ue_bs'][0]
np.concatenate((a[0], a[1]), axis=0)
Run Code Online (Sandbox Code Playgroud)
然后,我得到了
array([1.27932459e-01, 7.83234197e-02, 3.24789420e-02, 4.34971932e-01,
2.97806183e-01, 2.32453145e-01, 3.10236304e-01, 1.69975788e-02])
Run Code Online (Sandbox Code Playgroud)
我想知道是否有一种巧妙的方法可以在单行代码中执行此操作,而不必循环遍历df['ue_bs']
并执行np.concatenate()
?
我正在尝试编写一个通用函数,它创建一个采用节点和边列表的图形。对于每个节点,都有一组默认属性和一组可选属性。由于可选属性可以是任何东西,我想使用字典来存储它们。但是,看起来add_node()似乎不接受变量作为关键字。鉴于以下代码片段,
import networkx as nx
optional_attrs = {'ned':1, 'its':'abc'}
g = nx.Graph()
g.add_node('node1')
for k, v in optional_attrs.iteritems():
g.add_node('node1', k=v)
print g.node(data=True)
Run Code Online (Sandbox Code Playgroud)
我明白了
NodeDataView({'node1':{'k':'abc'}})
Run Code Online (Sandbox Code Playgroud)
代替,
NodeDataView({'node1':{'ned':1, 'its':'abc'}})
Run Code Online (Sandbox Code Playgroud)
我想知道有可能实现这一目标吗?
我尝试在mingw上创建一个UDP套接字,但是socket()
返回-1
,使用errno = 0
.奇怪.我已经包含了winsock2.h.最初我有编译错误undefined reference to socket@12
,在设置
-lws2_32
和-lwsock32
Code :: Block的链接器设置后,编译成功.
sockfd = socket(AF_INET, SOCK_DGRAM, 0);
RDF_LOG(kDEBUG, "sockfd %d ", sockfd);
if (sockfd < 0){
RDF_LOG(kERROR, "ERROR: %s , errno %d\n", strerror(errno), errno);
}
Run Code Online (Sandbox Code Playgroud)
结果 - > sockfd -1错误:没有错误,错误0
好的,我改为将RDF_LOG更改为fprintf.
int tmp = 0;
sockfd = socket(AF_INET, SOCK_DGRAM, 0);
tmp = errno;
fprintf(stderr, "sockfd %d ", sockfd);
if (sockfd < 0){
fprintf(stderr, "socket: %s , errno %d\n", strerror(tmp), tmp);
}
Run Code Online (Sandbox Code Playgroud)
返回的结果仍然是 - …
python ×7
python-2.7 ×7
c ×2
codeblocks ×2
mingw ×2
gurobi ×1
networkx ×1
numpy ×1
pandas ×1
pywin32 ×1
r ×1
rpy2 ×1
sockets ×1
statistics ×1
winsock2 ×1