小编Cup*_*tor的帖子

区分正值和负值的颜色图

正如在此示例代码中所见,由于 0 在频谱中的某个位置,因此很难追踪哪些点是负的,哪些是正的。虽然我的真实情节更连续,但我想知道是否有办法在这些情节图中分离负值和正值;例如,我如何为正值和负值使用两种不同的颜色光谱。

import numpy as np
from matplotlib import pyplot as plt
a=np.random.randn(2500).reshape((50,50))
plt.imshow(a,interpolation='none')
plt.colorbar()
plt.show()
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

编辑 在@MultiVAC 的帮助下,我在寻找解决方案时遇到了这个问题

import numpy as np
from matplotlib import pyplot as plt
from matplotlib.colors import BoundaryNorm
a=np.random.randn(2500).reshape((50,50))

# define the colormap
cmap = plt.cm.jet
# extract all colors from the .jet map
cmaplist = [cmap(i) for i in range(cmap.N)]
# create the new map
cmap = cmap.from_list('Custom cmap', cmaplist, cmap.N)

# define the bins and normalize
bounds = np.linspace(np.min(a),np.max(a),5)
norm …
Run Code Online (Sandbox Code Playgroud)

python matplotlib

11
推荐指数
1
解决办法
9960
查看次数

Python和Matplotlib中的垂直直方图

如何制作垂直直方图.有什么选择,还是应该从头开始构建?我想要的是上图看起来像下面的图,但在垂直轴上!

from matplotlib import pyplot as plt
import numpy as np
sample=np.random.normal(size=10000)
vert_hist=np.histogram(sample,bins=30)
ax1=plt.subplot(2,1,1)
ax1.plot(vert_hist[0],vert_hist[1][:-1],'*g')

ax2=plt.subplot(2,1,2)
ax2.hist(sample,bins=30)
plt.show()
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

python plot numpy matplotlib histogram

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

如何忽略Python中多输出函数的输出?

假设我有一个功能:

def f():
  ...
  ...
  ...
  return a,b,c
Run Code Online (Sandbox Code Playgroud)

我想在函数的输出中只得到b.我必须使用哪个作业?

谢谢.

python function output

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

信仰传播实施

我正在尝试实施贝叶斯网络.

我的主图是我想用于信念传播的因子图.但是,在计算消息时的置信传播中,并非所有参数都传递给函数,最终函数将是联合分布的限制.

我想到的最好的方法是以某种方式限制函数,以便每当我想为新值计算边际值时不进行所有替换.

我问过如何在这里实现这样的功能.

我想知道是否有更好的方法来做这样的事情,或者是否有比我想做的更简单快捷的方法.

python bayesian-networks belief-propagation

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

基于仅更新绘图中颜色的动画

我有一个由大量线条组成的情节.在每一步中,线条的颜色应该在动画中得到更新,但在线条上进行for循环似乎非常昂贵.有没有更好的方法呢?

这是我的代码:

import numpy as np
lines=[]
from matplotlib import pyplot as plt
import matplotlib.animation as animation

#initial plot
fig=plt.figure()
ax=plt.subplot(1,1,1)
for i in range(10):
    lines.append([])
    for j in range(10):
        lines[i].append(ax.plot([i,j],color='0.8'))
lines=np.asarray(lines)


##Updating the colors 10 times 
im=[]
for steps in range(10):
    colors=np.random.random(size=(10,10))
    for i in range(10):
        for j in range(10):
            lines[i,j][0].set_color(str(colors[i,j])) 
    plt.draw()
#    im.append(ax)
    plt.pause(.1)
#ani = animation.ArtistAnimation(fig, im, interval=1000, blit=True,repeat_delay=1000)
plt.show()
Run Code Online (Sandbox Code Playgroud)

另外我无法与动画艺术家合作!我用画画.动画线有什么问题

现在将这些10增加到100会使程序非常缓慢:

import numpy as np
lines=[]
from matplotlib import pyplot as plt
import matplotlib.animation as animation …
Run Code Online (Sandbox Code Playgroud)

python plot numpy matplotlib

6
推荐指数
1
解决办法
646
查看次数

n球坐标系到笛卡尔坐标系

在笛卡尔坐标系和n球坐标系之间有没有有效的改变方法?转型如下: 在此输入图像描述

以下是我的代码,但我想摆脱循环:

import numpy as np
import scipy.sparse

    def coord_transform_n(r,alpha):
        """alpha: the n-2 values between [0,\pi) and last one between [0,2\pi)
        """
        x=[]
        for i in range(alpha.shape[0]):
            x.append(r*np.prod(np.sin(alpha[0:i]))*np.cos(alpha[i]))
        return np.asarray(x)
    print coord_transform_n(1,np.asarray(np.asarray([1,2])))
Run Code Online (Sandbox Code Playgroud)

python arrays numpy

6
推荐指数
1
解决办法
1301
查看次数

穿过Numpy的2D线?

我试图在Numpy中进行线性组合以获得两点之间的向量遍历,但我正在做的方式非常可怕.

import numpy as np
a=np.array([1,2])
b=np.array([3,4])
t=np.linspace(0,1,4)
c=(np.asarray([t*a[0],t*a[1]])+np.asarray([(1-t)*b[0],(1-t)*b[1]])).T
print c
Run Code Online (Sandbox Code Playgroud)

输出正在

[[ 3.          4.        ]
 [ 2.33333333  3.33333333]
 [ 1.66666667  2.66666667]
 [ 1.          2.        ]]
Run Code Online (Sandbox Code Playgroud)

有没有更好的方法(当然有效)?

python arrays numpy

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

用于从具有不同间隔的截断正态分布中采样的矢量化代码

以下代码从具有不同间隔的trunctated正态分布生成大小为100的样本.这样做是否有任何有效(矢量化)方式?

from scipy.stats import truncnorm
import numpy as np
sample=[]
a_s=np.random.uniform(0,1,size=100)
b_s=a_s+0.2
for i in range(100):
    sample.append(truncnorm.rvs(a_s[i], b_s[i], size=100))
print sample
Run Code Online (Sandbox Code Playgroud)

python random numpy scipy sampling

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

在数组中转置数组

我有形状的2D阵列(M*N,N),其实际上包括M,N*N阵列.我想以N*N矢量化的方式转换所有这些元素(矩阵).举个例子,

import numpy as np
A=np.arange(1,28).reshape((9,3))
print "A before transposing:\n", A
for i in range(3):
    A[i*3:(i+1)*3,:]=A[i*3:(i+1)*3,:].T
print "A after transposing:\n", A
Run Code Online (Sandbox Code Playgroud)

此代码生成以下输出:

A before transposing: 
[[ 1  2  3]
 [ 4  5  6]
 [ 7  8  9]
 [10 11 12]
 [13 14 15]
 [16 17 18]
 [19 20 21]
 [22 23 24]
 [25 26 27]]
A after transposing: 
 [[ 1  4  7]
 [ 2  5  8]
 [ 3  6  9]
 [10 13 …
Run Code Online (Sandbox Code Playgroud)

python numpy

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

Python中的向量化平均K-最近邻距离

这是 R n中点的 K 最近邻算法,它应该计算每个点与其 k 最近邻的平均距离。问题是,虽然它是矢量化的,但从我重复自己的意义上说,它是低效的。如果有人可以帮助我改进此代码,我会很高兴:

import numpy as np
from scipy.spatial.distance import pdist
from scipy.spatial.distance import squareform

def nn_args_R_n_squared(points):
    """Calculate pairwise distances of points and return the matrix together with matrix of indices of the first matrix sorted"""
    dist_mat=squareform(pdist(points,'sqeuclidean'))
    return dist_mat,np.argsort(dist_mat,axis=1)
def knn_avg_dist(X,k):
    """Calculates for points in rows of X, the average distance of each, to their k-nearest      neighbours"""
    X_dist_mat,X_sorted_arg=nn_args_R_n_squared(X)
    X_matrices=(X[X_sorted_arg[:,1:k+1]]-X[...,None,...]).astype(np.float64)
    return np.mean(np.linalg.norm(X_matrices,axis=2)**2,axis=1)
X=np.random.randn(30).reshape((10,3))
print X
print knn_avg_dist(X,3)
Run Code Online (Sandbox Code Playgroud)

输出:

[[-1.87979713  0.02832699  0.18654558]
 [ 0.95626677  0.4415187  -0.90220505]
 [ …
Run Code Online (Sandbox Code Playgroud)

python numpy vectorization

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