我正在尝试在字典中实现快速查找已排序的元组; 回答"元组(3,8)是否具有相关价值的问题,如果是,它是什么?".让元组中的整数从下面绑定0,从上面绑定max_int.
我继续使用Python的dict,但发现它很慢.解决这个问题的另一种方法是创建一个包含max_int(通常为空)dicts的列表T,并为每个元组(3,8)设置T [3] [8] = value.我虽然这正是Python用dicts采用的bucket-hash方法,但后者在这里快了大约30倍(!).
而且,它很丑陋(特别是因为我现在要实现3元组),所以我非常感谢这里的一些提示.
作为参考,这是我用来获得时间的代码:
import numpy as np
import time
# create a bunch of sorted tuples
num_tuples = 10
max_int = 100
a = np.random.rand(num_tuples,2) * max_int
a = a.astype(int)
for k in xrange(len(a)):
a[k] = np.sort(a[k])
# create dictionary with tuples as keys
d = {}
for t in a:
d[tuple(t)] = 42
print d
# do some lookups
m = 100000
start_time = time.time()
for k in xrange(m):
(3,8) in d.keys()
elapsed …Run Code Online (Sandbox Code Playgroud) 我需要计算4分的"任意"四面体的体积.我正在写一个程序,需要找到四面体的体积,而我所知道的是:4点的所有X,Y,Z位置.该功能必须返回音量.我被困在这里10个小时......我想不出任何事情.谢谢!
我有一个类A(来自我无法控制的库),有一个私有拷贝构造函数和一个clone方法,以及一个B派生自的类A.我想实现clone的B为好.
天真的做法
#include <memory>
class A { // I have no control here
public:
A(int a) {};
std::shared_ptr<A>
clone() const
{
return std::shared_ptr<A>(new A(*this));
}
private:
A(const A & a) {};
};
class B: public A {
public:
B(int data, int extraData):
A(data),
extraData_(extraData)
{
}
std::shared_ptr<B>
clone() const
{
return std::shared_ptr<B>(new B(*this));
}
private:
int extraData_;
};
int main() {
A a(1);
}
Run Code Online (Sandbox Code Playgroud)
但是,失败了,因为复制构造函数A是私有的:
main.cpp: …Run Code Online (Sandbox Code Playgroud) 我有一个带有布局的Python项目
setup.py
foobar/
__init__.py
foo.py
bar/
__init__.py
Run Code Online (Sandbox Code Playgroud)
哪里foobar/__init__.py读
from . import foo
from . import bar
Run Code Online (Sandbox Code Playgroud)
和 setup.py
from setuptools import setup
setup(
name='foobar',
version='0.0.1',
packages=['foobar'],
)
Run Code Online (Sandbox Code Playgroud)
在做import foobar从源目录,这一切都按预期工作.然而,通过安装包时pip install .,子文件夹bar/中没有安装,导致导入错误
ImportError: cannot import name bar
Run Code Online (Sandbox Code Playgroud)
任何提示?
我使用tox来测试具有以下基本配置的 python 项目 ( tox.ini):
[tox]
envlist = py3
isolated_build = True
[testenv]
deps =
pytest
pytest-cov
commands =
pytest --cov {envsitepackagesdir}/foobar --cov-report xml --cov-report term
Run Code Online (Sandbox Code Playgroud)
不幸的是,该包的可选依赖项(如 中指定的setup.cfg)没有安装;原始点中相应的行是
pip install .[all]
Run Code Online (Sandbox Code Playgroud)
如何让 tox 安装所有可选依赖项?
假设我们有一个特别简单的功能
import scipy as sp
def func(x, y):
return x + y
Run Code Online (Sandbox Code Playgroud)
这个功能显然适用于几种内置Python数据类型x和y像串,列表,整数,浮点,数组,等等.因为我们是在阵列特别感兴趣,我们考虑两个数组:
x = sp.array([-2, -1, 0, 1, 2])
y = sp.array([-2, -1, 0, 1, 2])
xx = x[:, sp.newaxis]
yy = y[sp.newaxis, :]
>>> func(xx, yy)
Run Code Online (Sandbox Code Playgroud)
这回来了
array([[-4, -3, -2, -1, 0],
[-3, -2, -1, 0, 1],
[-2, -1, 0, 1, 2],
[-1, 0, 1, 2, 3],
[ 0, 1, 2, 3, 4]])
Run Code Online (Sandbox Code Playgroud)
正如我们所期望的那样.
现在,如果想要将数组作为以下函数的输入?
def func2(x, y):
if x > y:
return x …Run Code Online (Sandbox Code Playgroud) 如果它们都具有相同的形状,例如两个(n,1)或两个(n,),则两个矢量的元素相乘是没有问题的.但是,如果一个向量具有形状(n,1)而另一个向量具有(n,),则*-operator返回一些有趣的东西.
a = np.ones((3,1))
b = np.ones((3,))
print a * b
Run Code Online (Sandbox Code Playgroud)
得到的nxn矩阵包含A_ {i,j} = a_i*b_j.
我怎样才能实现elementwise乘法的a和b呢?
我有这个C++类,这是一个很复杂的方法compute,我想用"计算内核",一个同一类的方法.我想我会做一些事情
class test {
int classVar_ = 42;
int compute_add(int a, int b)
{
compute(int a, int b, this->add_())
}
int compute_mult(int a, int b)
{
compute(int a, int b, this->mult_())
}
int compute_(int a, int b, "pass in add or multiply as f()")
{
int c=0;
// Some complex loops {
c += f(a,b)
// }
return c;
}
int add_(int a, int b){a+b+classVar_;}
int multiply_(int a, int b){a*b+classVar_;}
...
}
Run Code Online (Sandbox Code Playgroud)
但我不确定我会怎样传递add或传递multiply.这种方法的另一种方法是传递ENUM …
编辑 - 添加了更多代码
尝试使用OpenGL ES 2.0正确旋转我的四边形时遇到很多问题.
它似乎总是围绕屏幕坐标的中心旋转.我试图让它围绕它自己的中心旋转(2d,所以只有z轴).
我一直在尝试使用Matrix.translate,如下所示.但是,在此处更改x或y pos只是将四边形绘制在屏幕上的不同位置,但是当它旋转时,它再次围绕屏幕的中心旋转.请有人解释如何让它围绕它自己的z轴旋转(就像一个轮子)?
谢谢,这里是相关的代码行 - 如果需要更多,请询问,我会发布.(请注意,我在SO和更广泛的互联网上看了很多类似的问题,但到目前为止我还没有找到答案).
谢谢.
//Set rotation
Matrix.setRotateM(mRotationMatrix, 0, -angle, 0, 0, 1.0f);
//Testing translation
Matrix.translateM(mRotationMatrix, 0, -.5f, .5f, 0f);
// Combine the rotation matrix with the projection and camera view
Matrix.multiplyMM(mvpMatrix, 0, mRotationMatrix, 0, mvpMatrix, 0);
Run Code Online (Sandbox Code Playgroud)
我的着色器(在班级宣布)
private final String vertexShaderCode =
"uniform mat4 uMVPMatrix;" +
"attribute vec4 vPosition;" +
"void main() {" +
" gl_Position = uMVPMatrix * vPosition;" +
"}";
private final String fragmentShaderCode =
"precision mediump float;" + …Run Code Online (Sandbox Code Playgroud) 考虑以下C代码:
#include <stdio.h>
int main(int argc, char* argv[])
{
const long double ld = 0.12345678901234567890123456789012345L;
printf("%lu %.36Lf\n", sizeof(ld), ld);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
用gcc 4.8.1under 编译Ubuntu x64 13.04,它打印:
16 0.123456789012345678901321800735590983
Run Code Online (Sandbox Code Playgroud)
这告诉我一个长的双重16字节,但小数似乎只对第20位.这怎么可能?16个字节对应四边形,四边形给出33到36个小数.