小编Sau*_*tro的帖子

处理由sympy整合返回的分段方程式

同情我有一个积分返回一个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

12
推荐指数
1
解决办法
2894
查看次数

numpy数组的固定大小子矩阵的指数

我正在实现一种算法,它要求我在(严格二维)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)

python arrays numpy

12
推荐指数
3
解决办法
3180
查看次数

matplotlib:结合不同的数字并将它们放在一个共同的图例中

我们有一个代码,用于从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 matplotlib

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

Python 2.7和3.3.2,为什么int('0.0')不起作用?

正如标题所说,在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 string integer type-conversion

12
推荐指数
3
解决办法
1万
查看次数

将2D numpy数组转换为2D numpy矩阵

我有一个python代码,我必须将2D数组转换为2D矩阵,以便我可以使用它来计算逆.因为我使用numpy.matrix(数组),但它无法正常工作.任何人都可以告诉如何将2D数组转换为numpy矩阵?该数组由所有浮点数组成

python arrays numpy matrix

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

如何在python中组合两个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进行测试

python arrays numpy python-2.7

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

将numpy指针(dtype = np.bool)传递给C++

我想在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)

c++ python boolean numpy cython

12
推荐指数
1
解决办法
3508
查看次数

使用NumPy进行Procrustes分析?

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)

python matlab numpy scipy

12
推荐指数
2
解决办法
7809
查看次数

为什么Cython比矢量化NumPy慢?

考虑以下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)

python arrays performance numpy cython

12
推荐指数
1
解决办法
1959
查看次数

cython中的cython共享内存.parallel.prange - block

我有一个函数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

11
推荐指数
2
解决办法
3091
查看次数