小编Sau*_*tro的帖子

Windows上的Numpy和Scipy安装

我成功安装了Numpy.但是在网站上,我必须做很多事情,例如构建Numpy,Scipy,下载ATLAS,LAPACK等.我真的很困惑,甚至我也检查了一些其他查询.仍然无法理解.

任何人都可以解释一下我到底应该怎么做?我在我的电脑上安装了cygwin.

  1. 如何建立Numpy?什么建筑numpy的使用?
  2. 如何安装Scipy?
  3. 什么是ATLAS,LAPACK等等?

非常感谢(提前).

python numpy blas scipy atlas

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

Matplotlib,避免plot_trisurf()中不需要的三角形

我有以下代码来创建一个稍后将应用置换字段的圆锥体.在下图所示的图中,您可以看到一些大三角形在顶部绘制,但不在底部绘制.我相信有一些内部隐藏参数可以告诉plot_trisurf()我们应该创建三角形的距离,否则它们也应该在底部创建.

import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
from matplotlib import cm
from numpy import linspace, interp, meshgrid, sin, cos, pi
numel_circum = 120
L = 38.
rb, rt = (38., 16.)
t1, t2 = (0, 2*pi)
rav = ( rb - rt )*rt/rb + rt
perav = (t2-t1) * rav
elsize_L = perav / numel_circum
numel_L = int(round(L/elsize_L,0))
ts = linspace(t1, t2, numel_circum)
r = lambda z: interp( z, [0, L], [rb, rt] )
zs = …
Run Code Online (Sandbox Code Playgroud)

python numpy matplotlib

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

matplotlib:一个图上的多个图

我有一些代码:

import matplotlib.pyplot as plt

def print_fractures(fractures):
    xpairs = []
    ypairs = []
    plt.figure(2)
    plt.subplot(212)
    for i in range(len(fractures)):
        xends = [fractures[i][1][0], fractures[i][2][0]]
        yends = [fractures[i][1][1], fractures[i][2][1]]
        xpairs.append(xends)
        ypairs.append(yends)
    for xends,yends in zip(xpairs,ypairs):
        plt.plot(xends, yends, 'b-', alpha=0.4)
    plt.show()


def histogram(spacings):
    plt.figure(1)
    plt.subplot(211)
    plt.hist(spacings, 100)
    plt.xlabel('Spacing (m)', fontsize=15)
    plt.ylabel('Frequency (count)', fontsize=15)
    plt.show()

histogram(spacings)    
print_fractures(fractures)
Run Code Online (Sandbox Code Playgroud)

此代码将生成以下输出: 图.1

我的问题是:

1)为什么要创建两个单独的数字?我认为subplot命令会将它们组合成一个图形.我以为它可能是多个plt.show()命令,但我尝试将这些命令注释掉,只从我的函数外部调用一次,我仍然有两个窗口.

2)如何将它们正确地组合成1个数字?另外,我希望图2的轴具有相同的比例(即,x轴上的400米与y轴上的400米的长度相同).同样,我也想垂直拉伸直方图 - 这是如何实现的?

python plot matplotlib

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

matplotlib的表格图例布局

我有一个9行的图,表示具有两个不同参数的数据集,比如f_11,f_12,f_13,...,f_33.为了使图(有点)更清晰,我将第一个参数编码为线的颜色,第二个参数编码为线型(因此f_11为红色和虚线,f12为红色和虚线,f21为绿色和虚线,f22为绿色和点缀等).所以,对于传说,我想做一个3x3的桌子,看起来像

       | value1 | value2 | value3
---------------------------------
value1 |
value2 |    <artists go there>
value3 |
Run Code Online (Sandbox Code Playgroud)

有什么办法可以用matplotlib来做这个吗?一个想法是用LaTeX制作这个盒子,但是我需要一种方法来将传奇艺术家绘制在正确的位置.

谢谢!

(来自matplotlib-users的crosspossted)

python plot matplotlib legend

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

Python:如何使用最少的代码行扩展一个庞大的类?

原始问题描述

当我实现一些机器学习算法时出现问题numpy.我想要一些新的类ludmo,它的工作方式相同 numpy.ndarray,但有一些属性.例如,使用新属性ludmo.foo.我已经尝试过以下几种方法,但没有一种方法令人满意.

1.包装

首先,我创建了一个包装类numpy.ndarray,如

import numpy as np

class ludmo(object):
    def __init__(self)
        self.foo = None
        self.data = np.array([])
Run Code Online (Sandbox Code Playgroud)

但是当我使用一些函数(scikit-learn我无法修改)来操作np.ndarray实例列表时,我必须先提取data每个ludmo对象的所有字段并将它们收集到一个列表中.之后,列表被排序,我丢失了data原始ludmo对象之间的对应关系.

2.继承

然后我试着创建ludmo一个子类numpy.ndarray,as

import numpy as np

class ludmo(np.ndarray):
    def __init__(self, shape, dtype=float, buffer=None, offset=0, strides=None, order=None)
        super().__init__(shape, dtype, buffer, offset, strides, order)
        self.foo = None
Run Code Online (Sandbox Code Playgroud)

但是另一个问题出现了:创建numpy.ndarray对象的最常见方法是numpy.array(some_list)返回一个numpy.ndarray对象,我必须将它转换为一个ludmo对象.但到目前为止,我发现没有好办法做到这一点; …

python arrays inheritance numpy class

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

"在numpy中"

我正在寻找一种方法来实现"as as"运算符numpy.具体来说,如果:

  1. t1n一个严格递增的时间戳的矢量;
  2. d1是一个n x p观察矩阵,i第 - 行对应t1[i];
  3. t2m时间戳的矢量中,也是严格递增的顺序;

我需要创建一个m x p矩阵d2,其中d2[i]仅仅是d1[j]对的最大价值j,使得t1[j] <= t2[i].

换句话说,我需要的行d1 的时间戳t2.

用纯Python编写它很容易,但我想知道是否有办法避免解释循环(n,m并且p非常大).

时间戳是datetime.datetime对象.观察结果是浮点值.

编辑:对于t1[j] <= t2[i]无法满足的条目(即t2在所有时间戳之前的时间戳中t1),我理想地想获得NaNs 行.

python loops numpy time-series

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

Python中数组的二维和三维散点直方图

你有什么想法,我怎么能把3个数组bin到直方图.我的阵列看起来像

Temperature = [4,   3,   1,   4,   6,   7,   8,   3,   1]
Radius      = [0,   2,   3,   4,   0,   1,   2,  10,   7]
Density     = [1,  10,   2,  24,   7,  10,  21, 102, 203]
Run Code Online (Sandbox Code Playgroud)

并且1D图应该看起来:

Density

     |           X
10^2-|               X
     |       X
10^1-|   
     |   X
10^0-|
     |___|___|___|___|___   Radius
         0  3.3 6.6  10
Run Code Online (Sandbox Code Playgroud)

二维图应该(定性)看起来像:

Density

     |           2      | |
10^2-|      11249       | |
     |     233          | | Radius
10^1-|    12            | |
     |   1              | |
10^0-|
     |___|___|___|___|___   Temperature
         0   3 …
Run Code Online (Sandbox Code Playgroud)

python numpy matplotlib histogram binning

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

numpy.sum可能比Python for循环慢

在特定轴上求和数组时,专用数组方法array.sum(ax)实际上可能比for循环慢:

v = np.random.rand(3,1e4)

timeit v.sum(0)                             # vectorized method
1000 loops, best of 3: 183 us per loop

timeit for row in v[1:]: v[0] += row        # python loop
10000 loops, best of 3: 39.3 us per loop
Run Code Online (Sandbox Code Playgroud)

矢量化方法比普通的for循环慢4倍!这里(g)的内容(wr),我不能相信numpy中的矢量化方法比for循环更快吗?

python performance numpy vectorization

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

数组和向量的numpy元素乘法

我想做这样的事情:

a =  # multi-dimensional numpy array
ares = # multi-dim array, same shape as a
a.shape
>>> (45, 72, 37, 24)  # the relevant point is that all dimension are different
v = # 1D numpy array, i.e. a vector
v.shape
>>> (37)  # note that v has the same length as the 3rd dimension of a
for i in range(37):
    ares[:,:,i,:] = a[:,:,i,:]*v[i]
Run Code Online (Sandbox Code Playgroud)

我认为必须有一个更紧凑的方式来做这个numpy,但我还没弄明白.我想我可以复制v然后计算a*v,但我猜测还有更好的东西.所以我需要"在一个给定的轴上"进行元素智能乘法,可以这么说.谁知道我怎么做到这一点?谢谢.(顺便说一下,我确实发现了一个非常复杂的问题,但由于OP在那里的特殊问题的性质,讨论非常简短,并被追踪到其他问题.)

python arrays numpy

7
推荐指数
3
解决办法
7473
查看次数

c malloc数组指针在cython中返回

如何有效地将cython中的malloc数组指针(或numpy数组指针)返回到python3.

只要我不返回数组指针,cython代码就可以正常工作

我想要:

def double complex* randn_zig(int n):
  ...
  r = malloc(n*n*sizeof(double complex))
  ...
  return r
Run Code Online (Sandbox Code Playgroud)

c11(gcc 11)等价物是:

double complex* randn_zig(int n){

    r = malloc(n*n*sizeof(double complex))

    return r
}
Run Code Online (Sandbox Code Playgroud)

我试过了 <double complex*> randn_zig(int n):

randn_zig(<double complex*> r, int n):

到目前为止,其他排列没有成功.c和cython代码版本的速度是Numby/pylab randn版本的5倍,如果我能找到一种方法来返回指向大型10 ^ 6到10 ^ 10双复数组的指针.

c python arrays numpy cython

7
推荐指数
2
解决办法
5131
查看次数