这是我在为样本熵编写python代码时遇到的问题.
map(max, abs(a[i]-a) ) 非常慢
还有其他功能表现更好map()吗?
andarray 在哪里看起来像np.array([ [1,2,3,4,5],[2,3,4,5,6],[3,4,5,3,2] ])
大家好我是python新手我必须为课堂作业实施套索L1回归.这涉及求解涉及块矩阵的二次方程.
minimize x^t * H * x + f^t * x
where x > 0
Run Code Online (Sandbox Code Playgroud)
其中H是2×2块矩阵,其中每个元素是ak维矩阵,x和f是2×1矢量,每个元素是ak维矢量.
我在考虑使用ndarrays.
这样:
np.shape(H) = (2, 2, k, k)
np.shape(x) = (2, k)
Run Code Online (Sandbox Code Playgroud)
但我发现np.dot(X,H)在这里不起作用.有没有简单的方法来解决这个问题?提前致谢.
例如,给定:
import numpy as np
data = np.array(
[[0, 0, 0],
[0, 1, 1],
[1, 0, 1],
[1, 0, 1],
[0, 1, 1],
[0, 0, 0]])
Run Code Online (Sandbox Code Playgroud)
我想得到一个三维数组,看起来像:
result = array([[[ 2., 0.],
[ 0., 2.]],
[[ 0., 2.],
[ 0., 0.]]])
Run Code Online (Sandbox Code Playgroud)
一种方法是:
for row in data
newArray[ row[0] ][ row[1] ][ row[2] ] += 1
Run Code Online (Sandbox Code Playgroud)
我想要做的是以下内容:
for i in dimension1
for j in dimension2
for k in dimension3
result[i,j,k] = (data[data[data[:,0]==i, 1]==j, 2]==k).sum()
Run Code Online (Sandbox Code Playgroud)
这似乎不起作用,我想通过坚持我的实现而不是在开头提到的那个(或使用任何额外的导入,例如计数器)来实现期望的结果.
谢谢.
我有一个由mathematica中的ListPlot3D创建的3D表面.表面本身是相对平面的并且在任意平面xy中.我想将这个表面放在分子的顶部,该分子是从ChemicalData函数生成的,或者是从.pdb或其他分子输入输入的.该分子也是平面的并且再次放置在xy平面中.我希望这两个3D对象分开一些z距离.
最终的希望是,我将在这个平面分子上面放置一个潜在的能量表面,它仍然可以在3D中旋转.我一直在使用Show和Graphics 3D选项没有成功.表面上的x,y点对应于3D分子上的x,y点,但是它们可以根据需要容易地缩放和移位.作为最后的选择,我想我可以输入原子的x,y,z坐标,并使用PointListPlot3D命令和各种选项来模仿分子的外观,但这似乎要复杂得多.
另一种可能的方法是将两个3D对象转换为3D框并简单地堆叠在彼此之上.但是我还没有在mathematica中找到这个功能.有没有人对如何做到这一点有任何想法?
PES = ListPlot3D[{{0., 0., -2.04900365`},..., {0., 0.3, -2.05743098`}}]
Show[Graphics3D[ChemicalData["Benzene","MoleculePlot"]],PES]
Run Code Online (Sandbox Code Playgroud)
问题是分子的规模与能量表面的规模.
我能说的最好的单位是皮米.然而,它们的原子距离似乎偏差了3%.
作为对此的更新,采用分子的xyz坐标并手动生成对象变得更加简单.已经有一段时间但我相信如果你只说:
ChemicalData["Benzene","MoleculePlot"]
Run Code Online (Sandbox Code Playgroud)
Mathematica将向您展示格式.如果您执行其中许多操作,则可以制作相当简单的python脚本.
我在excel中有一个矩阵,我试图导入并转换为numpy矩阵,然后用networkx绘制它,我将如何进行此操作?我确实有一些代码但不确定我是否正确地执行此操作.
import networkx as nx
import pandas as pd
import numpy
from numpy import genfromtxt
df=numpy.recfromcsv("Correlation_test.csv", delimiter=',', skiprows=1)
nx.Graph(df)
Run Code Online (Sandbox Code Playgroud)
谢谢
这是我到目前为止,但我一直收到错误说"输入不是一个正确的numpy矩阵或数组".
所以,我试图使用numpy.polynomial.legendre命令来生成P2到Pn多项式公式.我想输入2并且它给我p2 = 1/2 *(-1 +3x**2)或者如果输入是3则它得到我的P3公式.
这样我可以给x值计算每个Pn并使用我的一些类方法来计算错误以找到根.
我设法使用以下内容制作Plot:
numpy.polynomial.legendre.legval (x, np.identity(10))
Run Code Online (Sandbox Code Playgroud) 如何计算ndarray中每个数据点的元素数?
我想要做的是在我的ndarray中至少出现N次的所有值上运行OneHotEncoder.
我还想将所有出现少于N次的值替换为它没有出现在数组中的另一个元素(让我们称之为new_value).
所以我举例说:
import numpy as np
a = np.array([[[2], [2,3], [3,34]],
[[3], [4,5], [3,34]],
[[3], [2,3], [3,4] ]]])
Run Code Online (Sandbox Code Playgroud)
阈值N = 2我想要的东西:
b = [OneHotEncoder(a[:,[i]])[0] if count(a[:,[i]])>2
else OneHotEncoder(new_value) for i in range(a.shape(1)]
Run Code Online (Sandbox Code Playgroud)
所以只有理解我想要的替换,不考虑onehotencoder和使用new_value = 10我的数组应该是这样的:
a = np.array([[[10], [2,3], [3,34]],
[[3], [10], [3,34]],
[[3], [2,3], [10] ]]])
Run Code Online (Sandbox Code Playgroud) 我想弄清楚如何对数组的每两行求和.EG在此示例中将a转换为b:
a=array([[ 0, 1, 2, 3],
[ 4, 5, 6, 7],
[ 8, 9, 10, 11],
[12, 13, 14, 15]])
b=array([[ 4, 6, 8, 10],
[20, 22, 24, 26]])
Run Code Online (Sandbox Code Playgroud)
当前代码看起来像这样:
b=[]
for num in range(len(a)/2):
b.append(a[num*2]+a[num*2+1])
Run Code Online (Sandbox Code Playgroud)
当然必须有一个更快的方式.感谢您的时间.
回答如下:
b=a[::2,:]+a[1::2,:]
Run Code Online (Sandbox Code Playgroud)
这实际上帮助我扩展了如何跳过最初两行的次要问题.
>>> a=np.arange(24).reshape(6,-1)
>>> a
array([[ 0, 1, 2, 3],
[ 4, 5, 6, 7],
[ 8, 9, 10, 11],
[12, 13, 14, 15],
[16, 17, 18, 19],
[20, 21, 22, 23]])
>>> b=np.vstack((a[:2],a[2::2,:]+a[3::2,:]))
>>> b
array([[ 0, 1, 2, 3], …Run Code Online (Sandbox Code Playgroud) 考虑我的日志记录类
void LogWriter::InitLogWriter(void)
{
wcout.flush();
wcerr.flush();
COUT_BACKUP = wcout.rdbuf(); // save original cout buffer
CERR_BACKUP = wcerr.rdbuf(); //save original cerr buffer
FileStreamOpen = false;
switch(m_nTraceLvl)
{
case OffLevel:
StopOutput();
break;
case ErrorLevel:
OutputErrorsToFile(s_TraceFile);
break;
case DetailLevel:
OutputAllToFile(s_TraceFile);
break;
default:
StopOutput();
break;
}
wcout << "Initialize Log Writer" << endl;
}
void LogWriter::OutputAllToFile(TCHAR* fileName)
{
wstreambuf* fb = GetFileBufferStream(fileName);
wcout.rdbuf(fb); // push wcout buffer to file
wcerr.rdbuf(fb); // push cerr buffer to file
FileStreamOpen = true;
}
void LogWriter::OutputErrorsToFile(TCHAR* fileName)
{ …Run Code Online (Sandbox Code Playgroud)