草庐IT

NumPy库

全部标签

python - 如何将 numpy 数组分解成更小的 block /批处理,然后遍历它们

假设我有这个numpy数组[[1,2,3],[4,5,6],[7,8,9],[10,11,12]]我想把它分成两批,然后迭代:[[1,2,3],Batch1[4,5,6]][[7,8,9],Batch2[10,11,12]]最简单的方法是什么?编辑:我很抱歉我错过了这样的信息:一旦我打算继续迭代,原始数组将由于批处理的拆分和迭代而被破坏。批量迭代完成后,我需要从第一批重新开始,因此我应该保持原始数组不会被破坏。整个想法与需要对批处理进行迭代的随机梯度下降算法保持一致。在一个典型的例子中,我可以有一个100000次迭代的For循环,只有1000个批处理应该一次又一次地重放。

python - 在矩阵中使用 numpy.sum 和 numpy.mean 时如何忽略值

在numpy中应用sum和mean时,有没有办法避免使用特定值?例如,我想在计算结果时避免使用-999值。In[14]:c=np.matrix([[4.,2.],[4.,1.]])In[15]:d=np.matrix([[3.,2.],[4.,-999.]])In[16]:np.sum([c,d],axis=0)Out[16]:array([[7.,4.],[8.,-998.]])In[17]:np.mean([c,d],axis=0)Out[17]:array([[3.5,2.],[4.,-499.]]) 最佳答案 使用屏蔽数组:

python - 具有条件的高效 numpy argsort,同时保持原始索引

我想知道在给定条件下对数组进行argsort的最有效方法是什么,同时保留原始索引importnumpyasnpx=np.array([0.63,0.5,0.7,0.65])np.argsort(x)#Correctedargsort(x)solutionOut[99]:array([1,0,3,2])我想在x>0.6的条件下对这个数组进行argsort。由于0.5x=np.array([0.63,0.5,0.7,0.65])index=x.argsort()list(filter(lambdai:x[i]>0.6,index))[0,3,2]这是低效的,因为它没有向量化。编辑:过滤器将

python - Numpy/Pandas 干净的方法来检查特定值是否为 NaN

如何检查给定值是否为NaN?例如if(a==np.NaN)(不起作用)请注意:Numpy的isnan方法会抛出字符串等数据类型的错误Pandas文档仅提供删除包含NaN的行的方法,或检查DataFrame是否/何时包含NaN的方法。我问的是检查特定值是否为NaN。相关的Stackoverflow问题和Google搜索结果似乎是关于检查“是否有任何值是NaN”或“DataFrame中的哪些值”必须有一种干净的方法来检查给定值是否为NaN? 最佳答案 您可以使用NaN的inate属性!=NaN所以a==a将返回False如果a是NaN这

python - numpy:为大矩阵计算 x.T*x

在numpy中,计算x.T*x的最有效方法是什么,其中x是一个大的(200,000x1000)密集float32矩阵和.T是转置运算符?为避免疑义,结果为1000x1000。编辑:在我原来的问题中,我说np.dot(x.T,x)需要几个小时。事实证明,我有一些NaN潜入了矩阵,出于某种原因,这完全破坏了np.dot的性能(关于原因的任何见解?)这现在已经解决了,但原来的问题仍然存在。 最佳答案 这可能不是您正在寻找的答案,但显着加快速度的一种方法是使用GPU而不是CPU。如果您身边有一block相当强大的显卡,它随时都会胜过您的CP

python - numpy.ndarray : converting to a "normal" class

[python3]我喜欢ndarray但我觉得用起来很烦人。这是我面临的一个问题。我想编写classArray来继承ndarray的大部分功能,但只有一种实例化方式:作为特定大小的零填充数组。我希望写:classArray(numpy.ndarray):def__init__(size):#Whatdohere?我想用一些参数调用super().__init__来创建一个零填充数组,但它不会工作,因为ndarray使用全局函数numpy.zeros(而不是构造函数)来创建一个零填充数组。问题:为什么ndarray在很多情况下使用全局(模块)函数而不是构造函数?如果我试图在面向对象的环境

python - 使用所需行列表对 numpy 数组进行切片

我有一个numpy二维数组A和一个行号列表row_set。我怎样才能得到新的数组B例如如果row_set=[0,2,5],thenB=[A_row[0],A_row[2],A_row[5]]?我想到了这样的事情:defslice_matrix(A,row_set):slice=array([rowforrowinAifrow_numinrow_set])但我不知道,我怎样才能得到row_num。 最佳答案 使用take():In[87]:m=np.random.random((6,2))In[88]:mOut[88]:array([

python - Numpy 二维和一维数组到 latex bmatrix

我正在寻找一种将numpy数组迁移到latexbmatrix的干净方法。它应该适用于二维数组以及水平和垂直的一维数组。示例A=array([[12,5,2],[20,4,8],[2,4,3],[7,1,10]])printA#2darrayprintA[0]#horizontalarrayprintA[:,0,None]#verticalarrayarray_to_bmatrix(A)array_to_bmatrix(A[0])array_to_bmatrix(A[:,0,None])输出:[[1252][2048][243][7110]][1252][[12][20][2][7]]\

python - 获取 numpy 数组中第 k 个维度的第 i 个切片

我有一个n维的numpy数组,我想获取第k的第i切片方面。一定有比这更好的了#...elifk==5:b=a[:,:,:,:,:,i,...]#... 最佳答案 b=a[(slice(None),)*k+(i,)]手动构造索引元组。如Pythonlanguagereference中所述,形式的表达a[:,:,:,:,:,i]转换为a[(slice(None),slice(None),slice(None),slice(None),slice(None),i)]我们可以通过直接构建元组而不是使用切片符号来达到相同的效果。(有一个小警告

python - 如何在 OSX 上安装 numpy 和 scipy?

我是Mac新手,所以请多多包涵。我目前使用的是雪豹10.6.4。我想安装numpy和scipy,所以我从他们的官网下载了python2.6、numpy和scipydmg文件。但是,我在导入numpy时遇到问题:Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/numpy/core/multiarray.so:nomatchingarchitectureinuniversalwrapper谁能阐明这个问题? 最佳答案 听起来好像您可