标签: numpy

给定平均值和标准差生成二维正态分布

我正在寻找例程的二维模拟numpy.random.normal,即numpy.random.normal生成一个以平均值、标准差和样本数作为输入的一维数组,而我正在寻找的是一种生成二维点的方法具有相同输入参数的空间。

\n\n

看起来numpy.random.multivariate_normal可以做到这一点,但我不太明白参数cov应该是什么。以下摘录来自 scipy 文档,更详细地描述了此参数:

\n\n
\n

分布的协方差矩阵。对于具有物理意义的\xe2\x80\x9c 结果,必须是对称的且\n 正半定的。

\n
\n\n

在本页后面的示例部分中,cov给出了一个示例值:

\n\n
cov = [[1,0],[0,100]] # diagonal covariance, points lie on x or y-axis\n
Run Code Online (Sandbox Code Playgroud)\n\n

然而,这个概念对我来说仍然相当不透明。

\n\n

如果有人可以澄清cov应该是什么,或者建议使用 python 在给定平均值和标准差的二维空间中生成点的另一种方法,我将不胜感激。

\n

python numpy

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

numpy.dot -> MemoryError,my_dot -> 非常慢,但有效。为什么?

我正在尝试计算两个大小分别为 (162225, 10000) 和 (10000, 100) 的 numpy 数组的点积。但是,如果我调用 numpy.dot(A, B) 则会发生 MemoryError 。然后,我尝试编写我的实现:

def slower_dot (A, B):
    """Low-memory implementation of dot product"""
    #Assuming A and B are of the right type and size
    R = np.empty([A.shape[0], B.shape[1]])
    for i in range(A.shape[0]):
        for j in range(B.shape[1]):
            R[i,j] = np.dot(A[i,:], B[:,j])
    return R
Run Code Online (Sandbox Code Playgroud)

它工作得很好,但当然很慢。您知道 1)此行为背后的原因是什么以及 2)我如何规避/解决该问题吗?

我在一台配备 64 位、16GB 内存、运行 Ubuntu 14.10 的计算机上使用 Python 3.4.2(64 位)和 Numpy 1.9.1。

python arrays numpy

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

NumPy 中 ndim 的真正作用是什么?

考虑:

import numpy as np
>>> a=np.array([1, 2, 3, 4])
>>> a
array([1, 2, 3, 4])
>>> a.ndim
1
Run Code Online (Sandbox Code Playgroud)

维度1如何?我给出了三个变量的方程。意思是它是三维的,但它显示的维度为1。ndim的逻辑是什么?

python numpy

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

如何计算一个数字与平均值的标准差有多少?

我有一个大小为 (61964, 25) 的矩阵。这是一个示例:

array([[  1.,   0.,   0.,   4.,   0.,   1.,   0.,   0.,   0.,   0.,   3.,
          0.,   2.,   1.,   0.,   0.,   3.,   0.,   3.,   0.,  14.,   0.,
          2.,   0.,   4.],
       [  0.,   0.,   0.,   1.,   2.,   0.,   0.,   0.,   0.,   0.,   1.,
          0.,   2.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   5.,   0.,
          0.,   0.,   1.]])
Run Code Online (Sandbox Code Playgroud)

Scikit-learn 提供了一个有用的函数,前提是我们的数据呈正态分布:

from sklearn import preprocessing

X_2 = preprocessing.scale(X[:, :3])
Run Code Online (Sandbox Code Playgroud)

然而,我的问题是我必须按行进行工作 - 这不仅仅包含 25 个观察值 - 因此正态分布在这里不适用。解决方案是使用 t 分布,但如何在 Python 中做到这一点?

通常,值从 0 到 …

python arrays numpy standard-deviation scikit-learn

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

python numpy 具有偏好方向的偏置概率随机向量

生成有偏概率随机向量的最佳方法是什么?换句话说,给定方向向量“D(dx,dy,dz)”,有偏随机向量生成器仍将在所有方向上生成随机向量,但更有可能在 D 方向上生成向量

import numpy as np
# generate 1000 vectors in all directions
vectors = np.random.random((1000,3))-np.random.random((1000,3))
# generate biased vectors probability
# proba argument gives the biasing intensity or probability to be close to D vector
vectors = biased_proba_random_vectors(directon=(dx,dy,dz), proba=0.7,size=(1000,3))
# biased_proba_random_vectors is a representation, any other implementation is welcomed
Run Code Online (Sandbox Code Playgroud)

应该如下图所示 在此输入图像描述

python numpy python-2.7

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

NLOPT 无效参数 Python

当我在 python 中运行以下简单的 NLOPT 示例时:

import numpy as np
import nlopt 

n = 2
localopt_feval_max = 10
lb = np.array([-1, -1])
ub = np.array([1, 1])


def myfunc(x, grad):
    return -1

opt = nlopt.opt(nlopt.LN_NELDERMEAD, n)

opt.set_lower_bounds(lb)
opt.set_upper_bounds(ub)
opt.set_maxeval(localopt_feval_max)

opt.set_min_objective(myfunc)
opt.set_xtol_rel(1e-8)
x0 = np.array([0,0])

x = opt.optimize(x0)
Run Code Online (Sandbox Code Playgroud)

我收到错误:

"ValueError: nlopt invalid argument"
Run Code Online (Sandbox Code Playgroud)

这里参考给出的唯一建议:

http://ab-initio.mit.edu/wiki/index.php/NLopt_Python_Reference

是下限可能大于上限,或者存在未知算法(这里都不是这种情况)。我正在运行以下版本的 Python、NLOPT 和 NumPy

>>> sys.version
'3.4.0 (default, Apr 11 2014, 13:05:11) \n[GCC 4.8.2]'
>>> nlopt.__version__
'2.4.2'
>>> np.__version__
'1.8.2'
Run Code Online (Sandbox Code Playgroud)

python numpy nlopt

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

将 .npy 掩码数组保存为带有 NaN 的 .npy 数组,其中 mask == True

有没有办法将掩码 3D numpy 数组转换为用 NaN 代替掩码的 numpy 数组?这样我就可以使用 轻松写出 numpy 数组np.save。另一种方法是找到一种方法来写出屏蔽数组,并为屏蔽元素提供一些清晰的指示符。我努力了:

a = np.ma.zeros((500, 500))
a.dump('test')
Run Code Online (Sandbox Code Playgroud)

但我需要该文件采用某种格式,以便可以将其读入 R。谢谢。

python numpy

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

Numpy 的索引是倒排的

我正在忙于阅读 Wes Mckinney 的《Python for Data Analysis》,并且遇到了以下示例,该示例有点令人困惑。它涉及将多个索引数组传递给 np 数组。

给定以下 np.array

[[ 0  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]
 [28 29 30 31]] 
Run Code Online (Sandbox Code Playgroud)

当我们使用以下值对数组执行花式索引时

arr[[1, 5, 7, 2], [0, 3, 1, 2]]
Run Code Online (Sandbox Code Playgroud)

以下结果

array([ 4, 23, 29, 10]) 
Run Code Online (Sandbox Code Playgroud)

这并不是我所期望的>我知道它应该返回与每个实例元组相对应的一维元素数组。它返回的实际值让我感到困惑。

我认为它应该返回的元组是 (0,1), (5,3), (7, 1), (2, 2)

应该返回 [4, 没有这样的元素, 没有这样的元素, 10]

我到底缺少什么?

python arrays indexing numpy

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

numpy 赋值不起作用

假设我有以下内容numpy.array

In[]: x
Out[]: 
array([[1, 2, 3, 4, 5],
       [5, 2, 4, 1, 5],
       [6, 7, 2, 5, 1]], dtype=int16)


In[]: y
Out[]: 
array([[-3, -4],
       [-4, -1]], dtype=int16)
Run Code Online (Sandbox Code Playgroud)

我想替换xby的子数组y并尝试了以下操作:

In[]: x[[0,2]][:,[1,3]]= y
Run Code Online (Sandbox Code Playgroud)

理想情况下,我希望这种情况发生:

In[]: x
Out[]: 
array([[1, -3, 3, -4, 5],
       [5, 2, 4, 1, 5],
       [6, -4, 2, -1, 1]], dtype=int16)
Run Code Online (Sandbox Code Playgroud)

赋值行没有给我任何错误,但是当我检查输出时x

 In[]: x
Run Code Online (Sandbox Code Playgroud)

我发现这x没有改变,即作业没有发生。

我怎样才能完成这项任务?为什么任务没有完成?

numpy python-3.x

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

如何创建 4 或 8 连接的邻接矩阵

我一直在寻找一个 python 实现,给定一个数组,它返回 4 或 8 连接的邻接矩阵。我感到惊讶的是 cv2 或 networkx 不包含此功能。我遇到了这个很棒的 Matlab实现,并决定用 python 做一些类似的东西。

问题:我正在寻找一种可以改进运行时/空间中链接的 Matlab 解决方案或其他有趣方法的实现。

免责声明

我在这里提交我自己的实现,因为我认为我不可能是唯一需要为图像处理或其他应用程序创建(4 / 8 连接)邻接矩阵的人。我希望能够提供改进或更好的实施。

python numpy image-processing scipy adjacency-matrix

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