我正在寻找python 2.7 unittest setUpClass()方法的一些基本示例.我正在尝试在我的模块中测试一些类方法,并且我已经达到了:
import unittest
import sys
import mymodule
class BookTests(unittest.TestCase):
@classmethod
def setUpClass(cls):
cls._mine = mymodule.myclass('test_file.txt', 'baz')
Run Code Online (Sandbox Code Playgroud)
但我不知道如何从这里开始利用我刚刚创建的对象编写测试.
我已经定义了一个ctypes类和一个相关的便利函数,如下所示:
class BNG_FFITuple(Structure):
_fields_ = [("a", c_uint32),
("b", c_uint32)]
class BNG_FFIArray(Structure):
_fields_ = [("data", c_void_p),
("len", c_size_t)]
# Allow implicit conversions from a sequence of 32-bit unsigned ints
@classmethod
def from_param(cls, seq):
return seq if isinstance(seq, cls) else cls(seq)
def __init__(self, seq, data_type = c_float):
array_type = data_type * len(seq)
raw_seq = array_type(*seq)
self.data = cast(raw_seq, c_void_p)
self.len = len(seq)
def bng_void_array_to_tuple_list(array, _func, _args):
res = cast(array.data, POINTER(BNG_FFITuple * array.len))[0]
return res
convert = lib.convert_to_bng
convert.argtypes = (BNG_FFIArray, …Run Code Online (Sandbox Code Playgroud) 我在一个等值线图旁边放了一个彩条.因为绘制的数据是离散的而不是连续的值,所以我使用了一个LinearSegmentedColormap(使用scipy cookbook中的配方),我用我的最大计数值+1初始化,以显示0的颜色.但是,我现在有两个问题:

刻度标签间距不正确(除了5或更多或更少) - 它们应位于它们识别的颜色的中间; 即0 - 4应向上移动,6 - 10应向下移动.
如果我初始化colorbar drawedges=True,以便我可以设置其dividers属性,我得到这个:

我正在创建我的色彩映射和颜色条:
cbmin, cbmax = min(counts), max(counts)
# this normalises the counts to a 0,1 interval
counts /= np.max(np.abs(counts), axis=0)
# density is a discrete number, so we have to use a discrete color ramp/bar
cm = cmap_discretize(plt.get_cmap('YlGnBu'), int(cbmax) + 1)
mappable = plt.cm.ScalarMappable(cmap=cm)
mappable.set_array(counts)
# set min and max values for the colour bar ticks
mappable.set_clim(cbmin, cbmax)
pc = PatchCollection(patches, match_original=True)
# impose …Run Code Online (Sandbox Code Playgroud) 根据这些 答案,我现在定义了一个Rust 1.0函数,如下所示,以便可以使用Python从Python调用ctypes:
use std::vec;
extern crate libc;
use libc::{c_int, c_float, size_t};
use std::slice;
#[no_mangle]
pub extern fn convert_vec(input_lon: *const c_float,
lon_size: size_t,
input_lat: *const c_float,
lat_size: size_t) -> Vec<(i32, i32)> {
let input_lon = unsafe {
slice::from_raw_parts(input_lon, lon_size as usize)
};
let input_lat = unsafe {
slice::from_raw_parts(input_lat, lat_size as usize)
};
let combined: Vec<(i32, i32)> = input_lon
.iter()
.zip(input_lat.iter())
.map(|each| convert(*each.0, *each.1))
.collect();
return combined
}
Run Code Online (Sandbox Code Playgroud)
我正在设置Python部分:
from ctypes import *
class Int32_2(Structure):
_fields_ = …Run Code Online (Sandbox Code Playgroud) 我想生成x和y坐标的相关数组,以便测试各种matplotlib绘图方法,但我在某处失败了,因为我不能numpy.random.multivariate_normal给我想要的样本.理想情况下,我希望我的x值介于-0.51和51.2之间,我的y值介于0.33和51.6之间(虽然我认为相等的范围可以,因为我之后可以约束该情节),但我不确定是什么意思(我应该使用0,0?)和协方差值来从函数中获取这些样本.
我想从一个简单的Pandas DataFrame创建一些NetworkX图:
Loc 1 Loc 2 Loc 3 Loc 4 Loc 5 Loc 6 Loc 7
Foo 0 0 1 1 0 0 0
Bar 0 0 1 1 0 1 1
Baz 0 0 1 0 0 0 0
Bat 0 0 1 0 0 1 0
Quux 1 0 0 0 0 0 0
Run Code Online (Sandbox Code Playgroud)
哪里Foo…是指数,并Loc 1以Loc 7是列.但转换为Numpy矩阵或重新排列似乎不适用于生成输入nx.Graph().是否有实现这一目标的标准策略?我不反对重新格式化Pandas中的数据 - >转储到CSV - >导入到NetworkX,但似乎我应该能够从索引和值中的节点生成边缘.
在Flask 0.8中,我知道我可以使用单独的表单字段访问form.fieldname.data,但是有一种简单的方法可以迭代所有表单字段吗?我正在构建一个电子邮件消息正文,我想遍历所有字段并为每个字段创建一个字段名/值条目,而不是通过命名每个字段并附加来手动构建它.
我有两张桌子,tablet并且correspondent:
class Correspondent(db.Model, GlyphMixin):
# PK column and tablename etc. come from the mixin
name = db.Column(db.String(100), nullable=False, unique=True)
# association proxy
tablets = association_proxy('correspondent_tablets', 'tablet')
def __init__(self, name, tablets=None):
self.name = name
if tablets:
self.tablets = tablets
class Tablet(db.Model, GlyphMixin):
# PK column and tablename etc. come from the mixin
area = db.Column(db.String(100), nullable=False, unique=True)
# association proxy
correspondents = association_proxy('tablet_correspondents', 'correspondent')
def __init__(self, area, correspondents=None):
self.area = area
if correspondents:
self.correspondents = correspondents
class …Run Code Online (Sandbox Code Playgroud) 我正在为一些有限大小的物理系统进行计算机模拟,之后我正在对无穷大进行外推(热力学极限).一些理论认为数据应该随着系统规模线性扩展,所以我做的是线性回归.
我的数据有噪音,但对于每个数据点,我可以估算出错误.因此,例如数据点看起来像:
x_list = [0.3333333333333333, 0.2886751345948129, 0.25, 0.23570226039551587, 0.22360679774997896, 0.20412414523193154, 0.2, 0.16666666666666666]
y_list = [0.13250359351851854, 0.12098339583333334, 0.12398501145833334, 0.09152715, 0.11167239583333334, 0.10876248333333333, 0.09814170444444444, 0.08560799305555555]
y_err = [0.003306749165349316, 0.003818446389148108, 0.0056036878203831785, 0.0036635292592592595, 0.0037034897788415424, 0.007576672222222223, 0.002981084130692832, 0.0034913019065973983]
Run Code Online (Sandbox Code Playgroud)
假设我试图在Python中执行此操作.
我知道的第一种方式是:
m, c, r_value, p_value, std_err = scipy.stats.linregress(x_list, y_list)
Run Code Online (Sandbox Code Playgroud)
我理解这给了我结果的错误栏,但这没有考虑初始数据的错误栏.
我知道的第二种方式是:
m, c = numpy.polynomial.polynomial.polyfit(x_list, y_list, 1, w = [1.0 / ty for ty in y_err], full=False)
Run Code Online (Sandbox Code Playgroud)这里我们使用每个点的误差条的倒数作为在最小二乘近似中使用的权重.因此,如果一个点不是那么可靠,那么它不会对结果造成太大影响,这是合理的.
但我无法弄清楚如何获得结合这两种方法的东西.
我真正想要的是第二种方法的作用,意思是当每个点都影响不同权重的结果时使用回归.但与此同时,我想知道我的结果有多准确,这意味着,我想知道结果系数的误码是什么.
我怎样才能做到这一点?
我想通过排除任何包含0-9之外的字符的项目来"清理"一个列表,并想知道是否有一种比例如更高效的方式
import re
invalid = re.compile('[^0-9]')
ls = ['1a', 'b3', '1']
cleaned = [i for i in ls if not invalid.search(i)]
print cleaned
>> ['1']
Run Code Online (Sandbox Code Playgroud)
因为我要在大字符串(5k项)的长字符串(15个字符)上操作.
python ×10
ctypes ×2
numpy ×2
correlation ×1
ffi ×1
flask ×1
matplotlib ×1
networkx ×1
pandas ×1
random ×1
rust ×1
sqlalchemy ×1
unit-testing ×1