我成功安装了Numpy.但是在网站上,我必须做很多事情,例如构建Numpy,Scipy,下载ATLAS,LAPACK等.我真的很困惑,甚至我也检查了一些其他查询.仍然无法理解.
任何人都可以解释一下我到底应该怎么做?我在我的电脑上安装了cygwin.
非常感谢(提前).
我有以下代码来创建一个稍后将应用置换字段的圆锥体.在下图所示的图中,您可以看到一些大三角形在顶部绘制,但不在底部绘制.我相信有一些内部隐藏参数可以告诉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) 我有一些代码:
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)为什么要创建两个单独的数字?我认为subplot命令会将它们组合成一个图形.我以为它可能是多个plt.show()命令,但我尝试将这些命令注释掉,只从我的函数外部调用一次,我仍然有两个窗口.
2)如何将它们正确地组合成1个数字?另外,我希望图2的轴具有相同的比例(即,x轴上的400米与y轴上的400米的长度相同).同样,我也想垂直拉伸直方图 - 这是如何实现的?
我有一个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)
当我实现一些机器学习算法时出现问题numpy.我想要一些新的类ludmo,它的工作方式相同 numpy.ndarray,但有一些属性.例如,使用新属性ludmo.foo.我已经尝试过以下几种方法,但没有一种方法令人满意.
首先,我创建了一个包装类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对象之间的对应关系.
然后我试着创建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对象.但到目前为止,我发现没有好办法做到这一点; …
我正在寻找一种方法来实现"as as"运算符numpy.具体来说,如果:
t1是n一个严格递增的时间戳的矢量;d1是一个n x p观察矩阵,i第 - 行对应t1[i];t2在m时间戳的矢量中,也是严格递增的顺序;我需要创建一个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 行.
你有什么想法,我怎么能把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) 在特定轴上求和数组时,专用数组方法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循环更快吗?
我想做这样的事情:
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在那里的特殊问题的性质,讨论非常简短,并被追踪到其他问题.)
如何有效地将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双复数组的指针.
python ×10
numpy ×8
matplotlib ×4
arrays ×3
plot ×2
atlas ×1
binning ×1
blas ×1
c ×1
class ×1
cython ×1
histogram ×1
inheritance ×1
legend ×1
loops ×1
performance ×1
scipy ×1
time-series ×1