Questions tagged «numpy»

NumPy是Python编程语言的科学和数字计算扩展。

6
在Python NumPy中,尺寸和轴是什么?
我正在使用PythonsNumPy模块进行编码。如果将3D空间中的点的坐标描述为[1, 2, 1],那不是三个维度,三个轴,三个等级吗?或者,如果那是一个维度,那它不应该是点(复数),而不是点吗? 这里是文档: 在Numpy中,尺寸称为轴。轴数为等级。例如,3D空间[1、2、1]中的点的坐标是等级1的数组,因为它具有一个轴。该轴的长度为3。 资料来源:http : //wiki.scipy.org/Tentative_NumPy_Tutorial
82 python  numpy 

3
在x和y坐标的numpy数组中查找最近点的索引
我有两个2d numpy数组:x_array包含x方向的位置信息,y_array包含y方向的位置。 然后,我有一长串x,y点。 对于列表中的每个点,我需要找到最接近该点的位置(在数组中指定)的数组索引。 基于这个问题,我天真地产生了一些有效的代码: 在numpy数组中查找最近的值 即 import time import numpy def find_index_of_nearest_xy(y_array, x_array, y_point, x_point): distance = (y_array-y_point)**2 + (x_array-x_point)**2 idy,idx = numpy.where(distance==distance.min()) return idy[0],idx[0] def do_all(y_array, x_array, points): store = [] for i in xrange(points.shape[1]): store.append(find_index_of_nearest_xy(y_array,x_array,points[0,i],points[1,i])) return store # Create some dummy data y_array = numpy.random.random(10000).reshape(100,100) x_array = …

5
将numpy数组作为列添加到Pandas数据框
我有一个形状为(X,Y)的Pandas数据框对象,如下所示: [[1, 2, 3], [4, 5, 6], [7, 8, 9]] 还有一个形状为(X,Z)的numpy稀疏矩阵(CSC),看起来像这样 [[0, 1, 0], [0, 0, 1], [1, 0, 0]] 如何将矩阵中的内容添加到新命名列中的数据框中,以使数据框最终像这样: [[1, 2, 3, [0, 1, 0]], [4, 5, 6, [0, 0, 1]], [7, 8, 9, [1, 0, 0]]] 请注意,数据框现在具有形状(X,Y + 1),并且矩阵中的行是数据框中的元素。
82 python  numpy  pandas 

1
使用numpy的数组的高效阈值过滤器
我需要过滤一个数组以删除低于某个阈值的元素。我当前的代码是这样的: threshold = 5 a = numpy.array(range(10)) # testing data b = numpy.array(filter(lambda x: x >= threshold, a)) 问题在于,这会使用带有lambda函数(慢速)的过滤器来创建一个临时列表。 由于这是一个非常简单的操作,因此也许有一个numpy函数可以高效地完成此操作,但是我一直找不到它。 我以为实现此目的的另一种方法可能是对数组进行排序,找到阈值的索引,然后从该索引开始返回一个切片,但是即使对于较小的输入这会更快(而且无论如何也不会引起注意) ),随着输入大小的增加,它的渐近渐近效率降低。 有任何想法吗?谢谢! 更新:我也进行了一些测量,当输入为100.000.000条目时,sorting + slicing仍比纯python过滤器快两倍。 In [321]: r = numpy.random.uniform(0, 1, 100000000) In [322]: %timeit test1(r) # filter 1 loops, best of 3: 21.3 s per loop In [323]: …

6
为什么corrcoef返回矩阵?
对我来说,np.corrcoef返回一个矩阵似乎很奇怪。 correlation1 = corrcoef(Strategy1Returns,Strategy2Returns) [[ 1. -0.99598935] [-0.99598935 1. ]] 有谁知道为什么会这样,以及是否有可能仅返回经典意义上的一个值?
81 python  math  numpy 


2
Python Scipy中的两样本Kolmogorov-Smirnov测试
我不知道如何在Scipy中进行两样本KS测试。 阅读文档scipy kstest之后 我可以看到如何测试分布与标准正态分布相同的地方 from scipy.stats import kstest import numpy as np x = np.random.normal(0,1,1000) test_stat = kstest(x, 'norm') #>>> test_stat #(0.021080234718821145, 0.76584491300591395) 这意味着在0.76的p值下,我们不能拒绝两个分布相同的零假设。 但是,我想比较两个分布,看看是否可以拒绝它们相同的零假设,例如: from scipy.stats import kstest import numpy as np x = np.random.normal(0,1,1000) z = np.random.normal(1.1,0.9, 1000) 并测试x和z是否相同 我尝试过天真: test_stat = kstest(x, z) 并得到以下错误: TypeError: 'numpy.ndarray' object …


7
“ double_scalars中遇到无效值”警告,可能为numpy
当我运行代码时,偶尔会以四个为一组的形式收到这些警告。我试图通过在某些语句之前和之后放置调试消息来定位源,以查明源。 Warning: invalid value encountered in double_scalars Warning: invalid value encountered in double_scalars Warning: invalid value encountered in double_scalars Warning: invalid value encountered in double_scalars 这是Numpy警告,什么是双标量? 从Numpy我使用 min(), argmin(), mean() and random.randn() 我也使用Matplotlib

3
Pandas的性能适用于vs.np.vectorize从现有列创建新列
我正在使用Pandas数据框,并希望根据现有列创建一个新列。对于df.apply()和之间的速度差异,我还没有很好的讨论np.vectorize(),所以我想在这里问一下。 熊猫apply()功能很慢。根据我的测量(在一些实验中显示如下),至少在我的2016 MacBook Pro上,使用np.vectorize()它比使用DataFrame函数快25倍(或更多)apply()。这是预期的结果吗?为什么? 例如,假设我具有带N行的以下数据框: N = 10 A_list = np.random.randint(1, 100, N) B_list = np.random.randint(1, 100, N) df = pd.DataFrame({'A': A_list, 'B': B_list}) df.head() # A B # 0 78 50 # 1 23 91 # 2 55 62 # 3 82 64 # 4 99 80 进一步假设我想根据这两列A和创建一个新列B。在下面的示例中,我将使用一个简单的函数divide()。要应用此功能,我可以使用df.apply()或np.vectorize(): def …

10
以可移植数据格式保存/加载scipy稀疏csr_matrix
如何csr_matrix以可移植格式保存/加载稀疏稀疏?稀疏稀疏矩阵是在Python 3(Windows 64位)上创建的,以在Python 2(Linux 64位)上运行。最初,我使用pickle(协议= 2,fix_imports = True),但是从Python 3.2.2(Windows 64位)到Python 2.7.2(Windows 32位)不起作用,并出现错误: TypeError: ('data type not understood', <built-in function _reconstruct>, (<type 'numpy.ndarray'>, (0,), '[98]')). 接下来,尝试了numpy.save,numpy.load以及,scipy.io.mmwrite()并且scipy.io.mmread()这些方法都不起作用。
80 python  numpy  scipy 

5
增长numpy数字数组的最快方法
要求: 我需要从数据中任意增大一个数组。 我可以猜测大小(大约100-200),但不能保证每次都适合该数组 一旦增长到最终大小,我就需要对其进行数值计算,因此我更希望最终使用二维numpy数组。 速度至关重要。例如,对于300个文件之一,update()方法被称为4500万次(大约需要150秒),而finalize()方法被称为500k次(总共需要106s)……总共需要250s或者。 这是我的代码: def __init__(self): self.data = [] def update(self, row): self.data.append(row) def finalize(self): dx = np.array(self.data) 我尝试过的其他操作包括以下代码...但这速度会慢一些。 def class A: def __init__(self): self.data = np.array([]) def update(self, row): np.append(self.data, row) def finalize(self): dx = np.reshape(self.data, size=(self.data.shape[0]/5, 5)) 这是如何称呼它的示意图: for i in range(500000): ax = A() for …

4
如何将numpy.linalg.norm应用于矩阵的每一行?
我有一个2D矩阵,我想对每一行进行规范。但是当我numpy.linalg.norm(X)直接使用时,它将采用整个矩阵的范数。 我可以通过使用for循环来对每一行进行规范,然后对每一行进行规范X[i],但是由于我有30k行,所以这需要花费大量时间。 有什么建议可以找到更快的方法吗?还是可以将其应用于np.linalg.norm矩阵的每一行?
80 python  numpy 


9
numpy中有arange / linspace的多维版本吗?
我想要一个2d NumPy数组(x,y)的列表,其中每个x分别位于{-5,-4.5,-4,-3.5,...,3.5、4、4.5、5}中,并且与y相同。 我可以做 x = np.arange(-5, 5.1, 0.5) y = np.arange(-5, 5.1, 0.5) 然后遍历所有可能的对,但是我敢肯定有更好的方法... 我想要一些看起来像这样的东西: [[-5, -5], [-5, -4.5], [-5, -4], ... [5, 5]] 但是顺序并不重要。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.