Tag: numpy

快速检查NumPy中的NaN

我正在寻找最快的方法来检查NumPy数组X的NaN( np.nan )的发生。 np.isnan(X)是np.isnan(X)的,因为它构build了一个形状为X.shape的布尔型数组,它可能是巨大的。 我np.nan in X尝试np.nan in X ,但是这似乎不工作,因为np.nan != np.nan 。 有没有一个快速和有效的方法来做到这一点? (对那些会问“多么巨大”的人来说:我不能说,这是对库代码的inputvalidation。)

我如何findpython中的一个numpymatrix的长度(或尺寸,大小)?

对于python中的一个numpymatrix from numpy import matrix A = matrix([[1,2],[3,4]]) 我怎样才能findmatrix的行(或列)的长度? 等同地,我如何知道行数或列数? 到目前为止,我发现的唯一解决scheme是: len(A) len(A[:,1]) len(A[1,:]) 它分别返回2,2和1。 从这我收集len()将返回的行数,所以我总是可以转置, len(AT)的列数。 然而,当读取行len(A)时,这感觉不令人满意并且是任意的,这不应该立即显而易见地返回行数。 它实际上不同于len([1,2])对2D python数组的作用,因为这会返回2。 那么,有没有一种更直观的方法来查找matrix的大小,还是这是我最好的?

如何写一个multidimensional array到文本文件?

另一个问题,如果我能提供我遇到麻烦的arrays,其他用户提供了一些帮助。 但是,我甚至在基本的I / O任务上失败,比如将一个数组写入文件。 任何人都可以解释什么样的循环,我将需要写一个4x11x14 numpy数组文件? 这个数组由四个11×14的数组组成,所以我应该用一个漂亮的换行符来格式化,以使其他文件的读取更容易。 编辑 :所以我已经尝试了numpy.savetxt函数。 奇怪的是,它给出了以下错误: TypeError: float argument required, not numpy.ndarray 我认为这是因为该function不适用于multidimensional array? 任何解决scheme,我想他们在一个文件中?

python numpy.where()如何工作?

我正在玩弄numpy ,通过文档挖掘,我遇到了一些魔法。 也就是说我在谈论numpy.where() : >>> x = np.arange(9.).reshape(3, 3) >>> np.where( x > 5 ) (array([2, 2, 2]), array([0, 1, 2])) 他们如何实现内部的,你可以传递一个像x > 5的方法? 我想这与__gt__但我正在寻找一个详细的解释。

导入错误:没有名为numpy的模块

我对这个问题有一个非常类似的问题,但还是落后了一步。 我只有一个版本的Python 3安装在我的Windows 7( 对不起 )64位系统。 我在这个链接之后安装了numpy – 正如问题中所build议的那样。 安装很好,但是当我想导入 import numpy Import error:No module named numpy 我知道这可能是一个超级基本的问题,但我还在学习…谢谢

numpy数组的Python内存使用情况

我正在使用python来分析一些大的文件,我遇到了内存问题,所以我一直在使用sys.getsizeof()来尝试跟踪使用情况,但它与numpy数组的行为是离奇的。 下面是一个涉及我不得不打开的反照率地图的例子: >>> import numpy as np >>> import struct >>> from sys import getsizeof >>> f = open('Albedo_map.assoc', 'rb') >>> getsizeof(f) 144 >>> albedo = struct.unpack('%df' % (7200*3600), f.read(7200*3600*4)) >>> getsizeof(albedo) 207360056 >>> albedo = np.array(albedo).reshape(3600,7200) >>> getsizeof(albedo) 80 那么数据仍然存在,但对象的大小,一个3600×7200像素的地图,已经从〜200 Mb到80个字节。 我希望我的记忆问题已经结束,只是把所有的东西都转换成numpy数组,但是我觉得这种行为,如果是真的,会以某种方式违反信息论或热力学的某些规律,所以我倾向于认为getsizeof()不适用于numpy数组。 有任何想法吗?

numpy怎么能比我的Fortran程序快得多呢?

我从一个模拟(用Fortran编写)得到一个表示温度分布的512 ^ 3数组。 该数组存储在大小约为1 / 2G的二进制文件中。 我需要知道这个数组的最小值,最大值和平均值,因为无论如何,我将很快需要了解Fortran代码,所以我决定给它一个提示,并提出以下非常简单的例程。 integer gridsize,unit,j real mini,maxi double precision mean gridsize=512 unit=40 open(unit=unit,file='T.out',status='old',access='stream',& form='unformatted',action='read') read(unit=unit) tmp mini=tmp maxi=tmp mean=tmp do j=2,gridsize**3 read(unit=unit) tmp if(tmp>maxi)then maxi=tmp elseif(tmp<mini)then mini=tmp end if mean=mean+tmp end do mean=mean/gridsize**3 close(unit=unit) 这在我使用的机器上每个文件需要约25秒。 这让我感到相当长,所以我继续前进,在Python中做了以下事情: import numpy mmap=numpy.memmap('T.out',dtype='float32',mode='r',offset=4,\ shape=(512,512,512),order='F') mini=numpy.amin(mmap) maxi=numpy.amax(mmap) mean=numpy.mean(mmap) 现在,我认为这当然会更快,但是我真的被吹走了。 在相同的条件下需要不到一秒的时间。 平均数偏离我的Fortran例程发现的数据(我也用128位浮点数运行,所以我以某种方式相信它),但是仅在第7位有效数字左右。 numpy怎么能这么快? 我的意思是你必须看看数组的每一个条目来find这些值,对吧? 我在Fortran程序中做了一些非常愚蠢的事情,因为它需要更长的时间? 编辑: 要回答评论中的问题: […]

查看到一个numpy数组?

我有一个2D numpy数组。 有没有一种方法可以创build一个包含前k行和所有列的视图? 重点在于避免复制底层数据(数组太大以至于不能部分复制)。

是否可以按降序使用argsort

考虑下面的代码: avgDists = np.array([1, 8, 6, 9, 4]) ids = avgDists.argsort()[:n] 这给了我n最小元素的索引。 是否有可能使用这个相同的argsort降序获得n最高元素的指数?

如何在NumPy中规范化数组?

我想有一个NumPy数组的规范。 更具体地说,我正在寻找这个function的等效版本 def normalize(v): norm = np.linalg.norm(v) if norm == 0: return v return v / norm 有没有像skearn或numpy那样的东西? 这个函数在v是0向量的情况下工作。