草庐IT

python - NumPy:以编程方式修改结构化数组的 dtype

我有一个结构化数组,例如:importnumpyasnporig_type=np.dtype([('Col1','sa看起来像(随机数据):array([(11772880L,14527168,1.079593371731406e-307),(14528064L,21648608,1.9202565460908188e-302),(21651072L,21647712,1.113579933986867e-305),(10374784L,1918987381,3.4871913811200906e-304)],dtype=[('Col1','现在,在我的程序中,我不知为何决定需要将“C

python - "I;16"图像文件的 numpy.array

我想使用TIFF图像有效地保存大量测量数据。通过将它们设置为mode="I;16"(对应于我的16位数据范围),它们产生2MB文件(~1000x1000“像素”)。哪个好。但是,在分析它们时,我无法将它们重新转换为数组。对于32位数据(->“I”),numpy.array命令工作正常。在“I;16”的情况下,结果是一个0Dnumpy数组,其中TIFF作为[0,0]条目。有没有办法让它发挥作用?我真的很想避免使用32位图像,因为我不需要范围,而且它会使所需的HDD空间加倍(计划中有很多很多这样的测量...) 最佳答案 这应该可以工作(

python - numpy.ndarray 枚举适当的维度子集?

(在这篇文章中,让np成为numpy的简写。)假设a是一个(n+k)维np.ndarray对象,对于一些整数n>1和k>1。(IOW,n+k>3是a.ndim).我想枚举a的第一个n维度;这意味着,在每次迭代中,枚举器/迭代器都会生成一对,其第一个元素是ii的n索引,第二个元素是ka[ii]处的维度子ndarray。当然,编写一个函数来执行此操作并不难(事实上,我在下面给出了这样一个函数的示例),但我想知道这一点:doesnumpyprovideanyspecialsyntaxorfunctionsforcarryingoutthistypeof"partial"enumeration

python - 这个算法的名称,是否有它的 numpy/scipy 实现?

动机:我看过这个算法的描述,如果存在标准实现,我宁愿不重新发明轮子。我还了解到,如果有scipy/numpy实现,它通常比我自己用python实现的任何东西都要快得多。算法说明我在平面上有大量的点(几百万)。从一个包含所有点的大盒子开始,我想不断将该盒子分割为等面积的子盒子。当子框中至少有1,000个点时,递归地继续分割。该算法返回一棵树,该树描述了分割以及点到树的每个叶节点的映射。这个算法的名称是什么(类似于分而治之?),当给定一个2Dnumpy点数组时,是否有一个标准的方法来实现它? 最佳答案 它叫做quadtree分割。至于P

python - 如何消除由于 scipy/numpy fft 中的零填充而产生的边界效应?

我编写了一个python代码,使用Weierstrass变换平滑给定信号,这基本上是归一化高斯与信号的卷积。代码如下:#Importingrelevantlibrariesfrom__future__importdivisionfromscipy.signalimportfftconvolveimportnumpyasnpdefsmooth_func(sig,x,t=0.002):N=len(x)x1=x[-1]x0=x[0]#defininganewarrayywhichissymmetricaroundzero,tomakethegaussiansymmetric.y=np.lin

python - 获取 numpy.ndarray 的索引

我有一个numpy.ndarray类型的一维数组,我想知道它的最大条目的索引。找到最大值后,我使用peakIndex=numpy.where(myArray==max)找到峰的索引。但是我的脚本吐出的不是索引,而是peakIndex=(array([1293]),)我希望我的代码只输出整数1293。我怎样才能清理输出? 最佳答案 除了使用numpy.where,您还可以使用numpy.argmax.peakIndex=numpy.argmax(myArray)numpy.argmax返回单个数字,即第一次出现的最大值的扁平化索引。如

python - numpy 字符串数组索引行为

我有一个字符串数组>>>linesarray(['RL5\\Stark_223','RL5\\Stark_223','RL5\\Stark_223',...,'RL5\\Stark_238','RL5\\Stark_238','RL5\\Stark_238'],dtype='|S27')为什么我可以索引第一个数组元素的字符串>>>lines[0][0:3]'RL5'但不是所有数组元素都放在同一个地方>>>lines[:][0:3]array(['RL5\\Stark_223','RL5\\Stark_223','RL5\\Stark_223'],dtype='|S27')任何人都可以建

python - 在Python中的多列上对numpy数组进行排序

我正在尝试对第1列、第2列和第3列的以下数组进行排序[['2008''1''23''AAPL''Buy''100']['2008''1''30''AAPL''Sell''100']['2008''1''23''GOOG''Buy''100']['2008''1''30''GOOG''Sell''100']['2008''9''8''GOOG''Buy''100']['2008''9''15''GOOG''Sell''100']['2008''5''1''XOM''Buy''100']['2008''5''8''XOM''Sell''100']]我使用了以下代码:idx=np.lexso

Python numpy 保留已排序二维数组的索引列表

我有一个二维numpy数组,我想创建一个新的一维数组,如果它们按升序排序,它是第一个数组中数字的索引。对于以下数组:A=[[1,0,2],[0,3,0]]我希望它是这样的:B=[[1,1],[0,2],[0,0],[0,1],[1,0],[1,2]]知道如何使用预定义函数在python中完成它吗?谢谢 最佳答案 您可以使用argsort对展平数组的索引进行排序,然后是unravel_index将平面索引转换回坐标:>>>i=(-a).argsort(axis=None,kind='mergesort')>>>j=np.unravel

python - 在 NumPy 中使用 2 个维度进行索引时出错

为什么这样做:>>>(tf[:,[91,1063]])[[0,3,4],:]array([[0.04480133,0.01079433],[0.11145042,0.],[0.01177578,0.01418614]])但这不是:>>>tf[[0,3,4],[91,1063]]IndexError:shapemismatch:indexingarrayscouldnotbebroadcasttogetherwithshapes(3,)(2,)我做错了什么? 最佳答案 tf[:,[91,1063]])[[0,3,4],:]分两步操作,