将非重复元素添加到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) 当我试图将一个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) 我想编写一个Boost-Python程序来从用户那里获取一个符号python函数,并在我的程序中评估它的派生.
例如,User提供了一个python文件(Function.py),它定义了一个类似F = sin(x)*cos(x)的函数.
然后我希望使用Sympy的符号分化能力来访问F'(x)(F(x)的导数).我不想使用数值微分.
有没有办法使用Boost-Python在C++中访问这样的函数F'(x).
假设我们有一个形状为 (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) 我想使用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不能采取积分!
我正在尝试编译和链接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) 让我们考虑一下,有两个数组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有两个邻居1和2。元素1只有0作为邻居等等。
什么是创建所有邻居三元组阵列的最有效的方式I',J',K'这样j是邻居i和k是邻居j给出的条件i,j以及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 亿个元素)
我正在尝试在简单的正弦波上训练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) 我有一个具有特定格式、字体和颜色等的 Excel 文件。我想使用 pandas (pd.read_excel) 等 Python 库来读取它,并且只修改一些单元格而不影响样式。是否可以?目前,当我使用 pandas 进行读写时,样式会发生变化,并且似乎很难在 Python 中再次制作复杂的样式。
有没有办法在我们读取 Excel 文件时加载和存储 Excel 文件的格式/样式,以便在保存时应用?我只想修改几个单元格的值。
如果我们有一组点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 ×9
numpy ×3
boost-python ×2
c++ ×2
python-2.7 ×2
sympy ×2
add ×1
boost ×1
boost-thread ×1
containers ×1
dataframe ×1
excel ×1
lstm ×1
map ×1
math ×1
matlab ×1
pandas ×1
python-3.x ×1
pytorch ×1
scipy ×1
set ×1
symbols ×1
tensorflow ×1
tree ×1
vector ×1