Tag: numpy

在共享内存中使用numpy数组进行多处理

我想在共享内存中使用一个numpy数组用于多处理模块。 难点在于使用它像一个numpy数组,而不仅仅是一个ctypes数组。 from multiprocessing import Process, Array import scipy def f(a): a[0] = -a[0] if __name__ == '__main__': # Create the array N = int(10) unshared_arr = scipy.rand(N) a = Array('d', unshared_arr) print "Originally, the first two elements of arr = %s"%(arr[:2]) # Create, start, and finish the child process p = Process(target=f, args=(a,)) p.start() […]

使用numpy来构build两个数组的所有组合的数组

我试图运行一个6参数函数的参数空间来研究它的数值行为之前,试图做任何复杂的事情,所以我正在寻找一种有效的方式来做到这一点。 我的函数采用浮点值给定一个6 dim numpy数组作为input。 我最初尝试做的是这样的: 首先,我创build了一个函数,该函数接受2个数组,并使用两个数组中的所有值的组合生成一个数组 from numpy import * def comb(a,b): c = [] for i in a: for j in b: c.append(r_[i,j]) return c 然后我使用reduce()将其应用于同一个数组的m个副本: def combs(a,m): return reduce(comb,[a]*m) 然后我评估我的function是这样的: values = combs(np.arange(0,1,0.1),6) for val in values: print F(val) 这工作,但它太慢了。 我知道参数的空间是巨大的,但这不应该太慢。 在这个例子中,我只采样了10 6 (百万)个点,创build数组values 15秒以上的时间。 你知道用numpy做这个更有效的方法吗? 如果必要,我可以修改函数F取其参数的方式。

在numpy.array中查找唯一的行

我需要在numpy.arrayfind唯一的行。 例如: >>> a # I have array([[1, 1, 1, 0, 0, 0], [0, 1, 1, 1, 0, 0], [0, 1, 1, 1, 0, 0], [1, 1, 1, 0, 0, 0], [1, 1, 1, 1, 1, 0]]) >>> new_a # I want to get to array([[1, 1, 1, 0, 0, 0], [0, 1, 1, 1, […]

为什么NumPy而不是Python列表?

值得我学习NumPy吗? 我有大约100个金融市场系列,我将创建一个100x100x100 = 100万个单元格的立方阵列。 我将使用y和z对每个x进行回归(3变量),以填充标准错误的数组。 我听说,对于“大型矩阵”,我应该使用NumPy,而不是Python列表,出于性能和可扩展性的原因。 事情是,我知道Python列表,他们似乎为我工作。 上述问题的规模是否值得转移到NumPy? 如果我有1000个系列(即,立方体中有10亿个浮点单元),该怎么办?

在numpy数组中查找几个值的行索引

我有一个数组X: X = np.array([[4, 2], [9, 3], [8, 5], [3, 3], [5, 6]]) 我想在这个数组中找到几行值的索引: searched_values = np.array([[4, 2], [3, 3], [5, 6]]) 对于这个例子,我想像这样的结果: [0,3,4] 我有一个代码这样做,但我认为这太复杂了: X = np.array([[4, 2], [9, 3], [8, 5], [3, 3], [5, 6]]) searched_values = np.array([[4, 2], [3, 3], [5, 6]]) result = [] for s in searched_values: idx = np.argwhere([np.all((Xs)==0, […]

简单的数字识别OpenCV-Python中的OCR

我正在尝试在OpenCV-Python(cv2)中实现“数字识别OCR”。 这只是为了学习的目的。 我想在OpenCV中学习KNearest和SVM特性。 我有100个样本(即图像)的每个数字。 我想和他们一起训练。 OpenCV示例附带了一个样本letter_recog.py 。 但我仍然无法弄清楚如何使用它。 我不明白什么是样本,回应等。另外,它首先加载一个txt文件,我不明白的第一个。 稍后再搜索一下,我可以在cpp示例中找到一个letter_recognition.data。 我用它并在letter_recog.py模型中为cv2.KNearest创建了一个代码(仅用于测试): import numpy as np import cv2 fn = 'letter-recognition.data' a = np.loadtxt(fn, np.float32, delimiter=',', converters={ 0 : lambda ch : ord(ch)-ord('A') }) samples, responses = a[:,1:], a[:,0] model = cv2.KNearest() retval = model.train(samples,responses) retval, results, neigh_resp, dists = model.find_nearest(samples, k = 10) print results.ravel() […]

Numpy:x和y数组的笛卡尔积指向2D点的单个数组

我有两个numpy数组定义网格的x和y轴。 例如: x = numpy.array([1,2,3]) y = numpy.array([4,5]) 我想生成这些数组的笛卡尔积来生成: array([[1,4],[2,4],[3,4],[1,5],[2,5],[3,5]]) 在某种程度上,这是不是非常低效,因为我需要循环多次这样做。 我假设将它们转换为Python列表并使用itertools.product并返回到一个numpy数组不是最有效的形式。