小编Hes*_*sam的帖子

对于非重复项目,最有效的std容器是什么?

将非重复元素添加到STL容器中的最有效方法是什么,哪种容器最快?我有大量的数据,我担心每次尝试检查它是否是新元素时,都需要花费很多时间.我希望地图非常快.

// 1- Map
map<int, int> Map;
...
if(Map.find(Element)!=Map.end()) Map[Element]=ID;

// 2-Vector
vector<int> Vec;
...
if(find(Vec.begin(), Vec.end(), Element)!=Vec.end()) Vec.push_back(Element);

// 3-Set
// Edit: I made a mistake: set::find is O(LogN) not O(N)
Run Code Online (Sandbox Code Playgroud)

c++ containers vector map set

8
推荐指数
2
解决办法
1万
查看次数

将Matlab矩阵读入Python

当我试图将一个Matlab矩阵读入python时,我得到以下错误

>>> scipy.io.loadmat("Dynamical.mat")
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/lib/python2.7/dist-packages/scipy/io/matlab/mio.py", line 151, in loadmat
    MR = mat_reader_factory(file_name, appendmat, **kwargs)
  File "/usr/lib/python2.7/dist-packages/scipy/io/matlab/mio.py", line 105, in mat_reader_factory
    mjv, mnv = get_matfile_version(byte_stream)
  File "/usr/lib/python2.7/dist-packages/scipy/io/matlab/miobase.py", line 221, in get_matfile_version
    % ret)
ValueError: Unknown mat file type, version 46, 48
Run Code Online (Sandbox Code Playgroud)

Dynamical.mat是包含矩阵的文件

% Size = 30 30 
% Nonzeros = 252 
zzz = zeros(252,3);
zzz = [
1 1  1.4019896354966477e+01
1 2  0.0000000000000000e+00
1 3  0.0000000000000000e+00
...
Run Code Online (Sandbox Code Playgroud)

python matlab scipy python-2.7

8
推荐指数
1
解决办法
2616
查看次数

使用Boost-Python计算python中定义的函数的导数

我想编写一个Boost-Python程序来从用户那里获取一个符号python函数,并在我的程序中评估它的派生.

例如,User提供了一个python文件(Function.py),它定义了一个类似F = sin(x)*cos(x)的函数.

然后我希望使用Sympy的符号分化能力来访问F'(x)(F(x)的导数).我不想使用数值微分.

有没有办法使用Boost-Python在C++中访问这样的函数F'(x).

c++ python numpy sympy boost-python

7
推荐指数
1
解决办法
784
查看次数

在 numpy 中给定索引列表添加元素的最有效方法

假设我们有一个形状为 (N, ) 的 numpy 数组 A 和一个形状为 (M, 3) 的矩阵 D,其中包含数据和另一个形状为 (M, 3) 的矩阵 I,它具有 D 中每个数据元素的对应索引。我们可以构造 A 给定的 D 和 I 以便添加重复的元素索引吗?

例子:

############# A[I] := D ###################################  
A = [0.5, 0.6]                         # Final Reduced Data Vector
D = [[0.1, 0.1 0.2], [0.2, 0.4, 0.1]]  # Data
I = [[0, 1, 0], [0, 1, 1]]             # Indices
Run Code Online (Sandbox Code Playgroud)

例如:

A[0] = D[0][0] + D[0][2] + D[1][0]     # 0.5 = 0.1 + 0.2 + 0.2
Run Code Online (Sandbox Code Playgroud)

由于在索引矩阵中我们有:

I[0][0] = I[0][2] = …
Run Code Online (Sandbox Code Playgroud)

python numpy add

7
推荐指数
1
解决办法
231
查看次数

使用Sympy进行Python中的符号集成

我想使用sympy库在python中集成exp( - (x ^ 2 + y ^ 2)).我可以找到exp的积分( - (x ^ 2))

>>> B1 = sympy.exp(-alpha1 * (r1_x**2))
>>> p = integrate(B1,r1_x)
>>> p
pi**(1/2)*erf(alpha1**(1/2)*r1_x)/(2*alpha1**(1/2))
Run Code Online (Sandbox Code Playgroud)

但是当我想尝试整合exp( - (x ^ 2 + y ^ 2))

>>> B1 = sympy.exp(-alpha1 * (r1_x**2 + r1_y**2))
>>> p = integrate(B1,r1_x)
>>> p
Integral(exp(-alpha1*(r1_x**2 + r1_y**2)), r1_x)
Run Code Online (Sandbox Code Playgroud)

没有输出和python不能采取积分!

python math symbols sympy

5
推荐指数
2
解决办法
3808
查看次数

链接Boost-Python Hello World

我正在尝试编译和链接boost-python hello world示例,我有一些链接问题.

操作系统:Ubuntu

g++ -fPIC -w Test2.cpp -I ../../../Libs/Python/Python-2.7.3/Include -I ../../../Libs/Python/Python-2.7.3 -I ../../../Libs/Boost/boost_1_52_0 -Wl,-rpath,../../../Libs/Python/Python-2.7.3/build/lib.linux-x86_64-2.7 -L -L../../../Libs/Python/Python-2.7.3/build/lib.linux-x86_64-2.7 -lssl -lcrypto -lpthread -lm -lutil -lpython2.7 -Wl,-rpath, -L../../../Libs/Boost/boost_1_52_0/lib -L../../../Libs/Boost/boost_1_52_0/stage/lib -lboost_python
Run Code Online (Sandbox Code Playgroud)

我得到以下错误

../../../Libs/Boost/boost_1_52_0/stage/lib/libboost_python.so: undefined reference to `PyUnicodeUCS2_AsWideChar'
../../../Libs/Boost/boost_1_52_0/stage/lib/libboost_python.so: undefined reference to `PyUnicodeUCS2_FromEncodedObject'
collect2: ld returned 1 exit status
make: *** [Test2] Error 1
Run Code Online (Sandbox Code Playgroud)

我有2个Makefile,一个用于python,一个用于boost.Python Makefile:

PYTHON_VERSION  = 2.7.3
PYTHON_FOLDER   = Python-$(PYTHON_VERSION)
INSTAL_FOLDER   = $(PWD)/Python_Build

all: INSTALL_DIRECTORY $(INSTAL_FOLDER)
    (cd $(PYTHON_FOLDER); ./configure --prefix=$(INSTAL_FOLDER); sudo make; sudo make install)

clean:
    (cd $(PYTHON_FOLDER); sudo make clean;)
    (rm …
Run Code Online (Sandbox Code Playgroud)

python boost boost-thread boost-python python-2.7

5
推荐指数
1
解决办法
2073
查看次数

在python中查找邻居邻居的最有效方法

让我们考虑一下,有两个数组I,并J由此确定邻居对:

I = np.array([0, 0, 1, 2, 2, 3])
J = np.array([1, 2, 0, 0, 3, 2])
Run Code Online (Sandbox Code Playgroud)

这意味着元素0有两个邻居12。元素1只有0作为邻居等等。

什么是创建所有邻居三元组阵列的最有效的方式I'J'K'这样j是邻居ik是邻居j给出的条件ij以及k不同的元素(i != j != k)?

Ip = np.array([0, 0, 2, 3])
Jp = np.array([2, 2, 0, 2])
Kp = np.array([0, 3, 1, 0])
Run Code Online (Sandbox Code Playgroud)

当然,一种方法是遍历每个元素。有没有更高效的算法?(使用 10-5 亿个元素)

python tree numpy python-3.x

5
推荐指数
1
解决办法
514
查看次数

seq-to-seq LSTM 在低频简单正弦波上的性能不佳

我正在尝试在简单的正弦波上训练seq-to-seq模型。目标是获取数据点Nin并预测Nout下一个数据点。任务看起来很简单,模型对大频率freq(y = sin(freq * x))的预测很好。例如,对于freq=4,损失非常低,预测非常接近目标。然而,对于低频,预测是糟糕的。关于为什么模型失败的任何想法?

from tensorflow.keras.models import Model
from tensorflow.keras.layers import Input, LSTM, RepeatVector, TimeDistributed, Dense

freq = 0.25
Nin, Nout = 14, 14

# Helper function to convert 1d data to (input, target) samples
def windowed_dataset(y, input_window = 5, output_window = 1, stride = 1, num_features = 1):
    L = y.shape[0]
    num_samples = (L - input_window - output_window) // stride + 1
    X = np.zeros([input_window, num_samples, num_features])
    Y …
Run Code Online (Sandbox Code Playgroud)

python lstm tensorflow recurrent-neural-network

5
推荐指数
1
解决办法
111
查看次数

用Python读取excel文件并修改,不改变样式

我有一个具有特定格式、字体和颜色等的 Excel 文件。我想使用 pandas (pd.read_excel) 等 Python 库来读取它,并且只修改一些单元格而不影响样式。是否可以?目前,当我使用 pandas 进行读写时,样式会发生变化,并且似乎很难在 Python 中再次制作复杂的样式。

有没有办法在我们读取 Excel 文件时加载和存储 Excel 文件的格式/样式,以便在保存时应用?我只想修改几个单元格的值。

python excel dataframe pandas

5
推荐指数
1
解决办法
4472
查看次数

pytorch中计算角度

如果我们有一组点Rs,我们可以使用 torch.cdist 来获取所有点对的距离。

dists_ij = torch.cdist(Rs, Rs)
Run Code Online (Sandbox Code Playgroud)

是否有一个函数可以获取两组向量之间的角度,Vs如下所示:

angs_ij = torch.angs(Vs, Vs)
Run Code Online (Sandbox Code Playgroud)

python pytorch

4
推荐指数
1
解决办法
2491
查看次数