同情我有一个积分返回一个Piecewise对象,例如
In [2]: from sympy.abc import x,y,z
In [3]: test = exp(-x**2/z**2)
In [4]: itest = integrate(test,(x,0,oo))
In [5]: itest
Out[5]:
? ___
? ?? ? ?z ? ? 1 ?? ?
? ??????? for ?periodic_argument???????????????, ??? ? ?
? 2 ? ? 2 ?? 2
? ? ?polar_lift (z) ??
?
??
??
?? 2
?? -x
?? ???
?? 2
?? z
?? ? dx otherwise
??
?0
?
Run Code Online (Sandbox Code Playgroud)
我想提取这个分段方程的第一个分支,换句话说,我希望能够做一些itest.parts(0)简单的提取sqrt(pi)*z/2.我似乎无法找到任何方法来做到这一点,但也许我在文档中使用了错误的搜索词.有任何想法吗?
编辑
稍微探讨一下,我已经设法发现,如果我这样做,itest.args[0][0]我可以提取这个表达式.然而,这看起来有点像黑客.有更好的方法吗?
python symbolic-math sympy computer-algebra-systems symbolic-computation
我正在实现一种算法,它要求我在(严格二维)numpy数组中查看非重叠的连续子矩阵.例如,对于12乘12
>>> a = np.random.randint(20, size=(12, 12)); a
array([[ 4, 0, 12, 14, 3, 8, 14, 12, 11, 18, 6, 6],
[15, 13, 2, 18, 15, 15, 16, 2, 9, 16, 6, 4],
[18, 18, 3, 8, 1, 15, 14, 13, 13, 13, 7, 0],
[ 1, 9, 3, 6, 0, 4, 3, 15, 0, 9, 11, 12],
[ 5, 15, 5, 6, 4, 4, 18, 13, 10, 17, 11, 8],
[13, 17, 8, 15, 17, 12, 7, 1, 13, …Run Code Online (Sandbox Code Playgroud) 我们有一个代码,用于从input.txt文件创建数字.我们需要在一个子图中组合其中两个图.图1中的数据将绘制在左侧子图中,右侧子图中的图2将绘制,共享相同的图例,并且在轴x和y中具有相同的比例:

这里有一些示例数据:
x = [ 1, 2, 3, 5, 10, 100, 1000 ]
y1 = [ 1, 0.822, 0.763, 0.715, 0.680, 0.648, 0.645 ]
y2 = [ 1, 0.859, 0.812, 0.774, 0.746, 0.721, 0.718 ]
import matplotlib.pyplot as plt
# mode 01 from one case
fig1 = plt.figure()
ax1 = fig1.add_subplot(111)
ax1.plot( x, y1, label='mode 01' )
# mode 01 from other case
fig2 = plt.figure()
ax2 = fig2.add_subplot(111)
ax2.plot( x, y2, label='mode 01' )
Run Code Online (Sandbox Code Playgroud)
编辑:@nordev建议的方法有效.现在将ax1和ax2对象传递给新图非常方便,因为它们有更多的信息.似乎没有直接的方法来实现这一目标. …
正如标题所说,在Python中(我试过2.7和3.3.2),为什么int('0.0')不起作用?它给出了这个错误:
ValueError: invalid literal for int() with base 10: '0.0'
Run Code Online (Sandbox Code Playgroud)
如果你尝试int('0')或int(eval('0.0'))它的工作......
我有一个python代码,我必须将2D数组转换为2D矩阵,以便我可以使用它来计算逆.因为我使用numpy.matrix(数组),但它无法正常工作.任何人都可以告诉如何将2D数组转换为numpy矩阵?该数组由所有浮点数组成
我有两个numpy数组:
A = np.array([1, 3, 5, 7])
B = np.array([2, 4, 6, 8])
Run Code Online (Sandbox Code Playgroud)
我想从两者结合得到以下内容:
C = [1, 2, 3, 4, 5, 6, 7, 8]
Run Code Online (Sandbox Code Playgroud)
我可以通过使用来获得一些东西zip,但不是我正在寻找的东西:
>>> zip(A, B)
[(1, 2), (3, 4), (5, 6), (7, 8)]
Run Code Online (Sandbox Code Playgroud)
我如何组合两个numpy数组元素?
我对每个阵列中的50,000个元素进行了快速测试(100,000个组合元素).结果如下:
User Ma3x: Time of execution: 0.0343832323429 Valid Array?: True
User mishik: Time of execution: 0.0439064509613 Valid Array?: True
User Jaime: Time of execution: 0.02767023558 Valid Array?: True
Run Code Online (Sandbox Code Playgroud)
使用Python 2.7,Windows 7企业版64位,英特尔酷睿i7 2720QM @ 2.2 Ghz Sandy Bridge,8 GB Mem进行测试
我想在C++中使用一个类型为bool的numpy数组,方法是通过Cython传递它的指针.我已经知道如何使用uint8等其他数据类型.用布尔值以同样的方式做它不起作用.我能够编译,但在运行时有以下异常:
Traceback (most recent call last):
File "test.py", line 15, in <module>
c = r.count(b, 4)
File "rect.pyx", line 41, in rect.PyRectangle.count (rect.cpp:1865)
def count(self, np.ndarray[bool, ndim=1, mode="c"] array not None, int size):
ValueError: Does not understand character buffer dtype format string ('?')
Run Code Online (Sandbox Code Playgroud)
这是我的c ++方法:
void Rectangle::count(bool * array, int size)
{
for (int i = 0; i < size; i++){
std::cout << array[i] << std::endl;
}
}
Run Code Online (Sandbox Code Playgroud)
Cython文件:
# distutils: language = c++
# distutils: sources = Rectangle.cpp
import …Run Code Online (Sandbox Code Playgroud) procrustes在NumPy/SciPy或相关库中有类似Matlab的功能吗?
以供参考.Procrustes分析旨在通过去除刻度,平移和旋转扭曲分量来对齐2组点(换句话说,2个形状)以最小化它们之间的方形距离.
Matlab中的示例:
X = [0 1; 2 3; 4 5; 6 7; 8 9]; % first shape
R = [1 2; 2 1]; % rotation matrix
t = [3 5]; % translation vector
Y = X * R + repmat(t, 5, 1); % warped shape, no scale and no distortion
[d Z] = procrustes(X, Y); % Z is Y aligned back to X
Z
Z =
0.0000 1.0000
2.0000 3.0000
4.0000 5.0000
6.0000 7.0000
8.0000 9.0000
Run Code Online (Sandbox Code Playgroud)
NumPy中的相同任务:
X …Run Code Online (Sandbox Code Playgroud) 考虑以下Cython代码:
cimport cython
cimport numpy as np
import numpy as np
@cython.boundscheck(False)
@cython.wraparound(False)
def test_memoryview(double[:] a, double[:] b):
cdef int i
for i in range(a.shape[0]):
a[i] += b[i]
@cython.boundscheck(False)
@cython.wraparound(False)
def test_numpy(np.ndarray[double, ndim=1] a, np.ndarray[double, ndim=1] b):
cdef int i
for i in range(a.shape[0]):
a[i] += b[i]
def test_numpyvec(a, b):
a += b
def gendata(nb=40000000):
a = np.random.random(nb)
b = np.random.random(nb)
return a, b
Run Code Online (Sandbox Code Playgroud)
在解释器中运行它(在几次运行后预热缓存):
In [14]: %timeit -n 100 test_memoryview(a, b)
100 loops, best of 3: 148 ms per …Run Code Online (Sandbox Code Playgroud) 我有一个函数foo,它将一个指向内存的指针作为参数,并且对该内存进行写入和读取:
cdef void foo (double *data):
data[some_index_int] = some_value_double
do_something_dependent_on (data)
Run Code Online (Sandbox Code Playgroud)
我data这样分配:
cdef int N = some_int
cdef double *data = <double*> malloc (N * sizeof (double))
cdef int i
for i in cython.parallel.prange (N, nogil=True):
foo (data)
readout (data)
Run Code Online (Sandbox Code Playgroud)
我现在的问题是:不同的线程如何对待这个?我的猜测是指向的内存data将由所有线程共享,并在函数内部"同时"读取或写入foo.这会弄乱所有结果,因为人们不能依赖先前设定的数据值(内部foo)?我的猜测是正确的还是在cython编译器中实现了一些神奇的安全带?
非常感谢你提前.
python malloc parallel-processing cython python-multithreading