草庐IT

python - numpy 中 3D 数组的 2D 切片系列

我有一个表示笛卡尔空间密度值的3D数组。要获得二维图像,我只需使用sum(array,2)对其中一个轴求和,然后使用matplotlib函数imshow(array2D)获取二维图像。我想做的是使用imshow()一次只显示3D数组的一个切片,这样我就可以“翻页”3D数组以查看图像的不同点.切片命令很简单:array[:,:,x]但我看不出有什么办法至少一次显示每个切片。除了每次手动更改程序文件之外,还有其他建议吗?这可以以某种方式交互完成吗? 最佳答案 我实际上写了代码来做我认为你正在寻找的东西,看看这是否有帮助:importnu

python - SciPy 0.12.0 和 Numpy 1.6.1 - numpy.core.multiarray 导入失败

我刚刚安装了ArcGISv10.264位后台处理,它安装了Python2.7.364位和NumPy1.6.1。我在同一个Python安装中安装了SciPy0.12.064位。当我打开Python解释器时,我能够成功导入arcpy、numpy和scipy。但是,当我尝试importscipy.ndimage时,我收到一条错误消息,提示numpy.core.multiarrayfailedtoimport。我在网上找到的与此错误相关的所有内容都引用了scipy和numpy之间的问题,并建议升级到numpy1.6.1。我已经在numpy1.6.1了。有什么想法可以解决这个问题吗?

python - round() 和 numpy.round() 之间的底层区别是什么?

让我们看一下那句令人震惊的round语句:>>>round(2.675,2)2.67我知道为什么回合“失败”;这是因为2.675的二进制表示:>>>importdecimal>>>decimal.Decimal(2.675)Decimal('2.67499999999999982236431605997495353221893310546875')我不明白的是:为什么NumPy不会失败?>>>importnumpy>>>numpy.round(2.675,2)2.6800000000000002思考不要介意多余的零;这是Python打印内部舍入的产物。如果我们查看“精确”值,它们仍然不

python - 调整不包括 NaN 的 2D numpy 数组的大小

我正在尝试调整给定因子的2Dnumpy数组的大小,从而在输出中获得较小的数组。数组是从图像文件中读取的,一些值应该是NaN(不是数字,来自numpy的np.nan):这是卫星遥感测量的结果,只是一些像素没有被测量。我为此找到的合适包是scypy.misc.imresize,但包含NaN的输出数组中的每个像素都设置为NaN,即使原始像素中有一些有效数据插值在一起也是如此。我的解决方案附在这里,我所做的基本上是:根据原始阵列形状和所需的缩减系数创建一个新阵列创建一个索引数组来处理原始数组中的所有像素,以便对新数组中的每个像素进行平均循环遍历新的数组像素,对所有非NaN像素进行平均,得到新的

python - 设置掩护或击球设置; Numpy,构成全套的最少元素组合

我的目标是找到尽可能少的子集[a-f]来组成完整集A。A=set([1,2,3,4,5,6,7,8,9,10])#fullset#---belowaresubsetsofA---a=set([1,2])b=set([1,2,3])c=set([1,2,3,4])d=set([4,5,6,7])e=set([7,8,9])f=set([5,8,9,10])实际上,我正在处理的父集A包含15k个唯一元素和30k个子集,这些子集的长度范围从单个唯一元素到1.5k个唯一元素。到目前为止,我正在使用的代码看起来或多或少像下面这样,而且速度非常慢:importrandomB={'a':a,'b':

python/numpy 对掩码数组(和/或选择性排名)进行二维内核排名过滤的最快方法

给定一个二维numpy数组MyArray=np.array([[8.02,9.54,0.82,7.56,2.26,9.47],[2.68,7.3,2.74,3.03,2.25,8.84],[2.21,3.62,0.55,2.94,5.77,0.21],[5.78,5.72,8.85,0.24,5.37,9.9],[9.1,7.21,4.14,9.95,6.73,6.08],[1.8,5.14,5.02,6.52,0.3,6.11]])和掩码数组MyMask=np.array([[0.,0.,1.,1.,0.,1.],[1.,0.,0.,0.,0.,1.],[0.,0.,0.,1.,0.

python - 如何从可迭代的元组创建多维 numpy 数组?

我想从一个可迭代对象创建一个numpy数组,它产生值的元组,例如数据库查询。像这样:data=db.execute('SELECTcol1,col2,col3,col4FROMdata')A=np.array(list(data))有没有一种更快的方法,无需先将可迭代对象转换为列表? 最佳答案 我不是numpy的老用户,但对于一般问题,这里有一个可能的解决方案:>>>i=iter([(1,11),(2,22)])>>>i#asampleiterableoftuples>>>rec_array=np.fromiter(i,dtype=

python - 试图剥离 b' ' from my Numpy array' s savetxt() 表示

所以我觉得这是一个非常愚蠢的问题。我从一个文件创建一个数组:A1=np.loadtxt(file,dtype='a100')我想在完成处理后将该数组写入另一个文件:np.savetxt("Test.txt",A1,fmt=%s,delimiter=',')为什么要写出b'string'?我想我明白它是以字节的形式写出来的,但对于我来说,我无法弄清楚如果没有b''怎么写出来。我知道这可能是我忽略的非常容易的事情! 最佳答案 A1作为字节串数组加载。Python3默认使用unicode字符串,因此通常在它们前面加上'b'。这对于prin

python - 由字符串组成的 numpy 数组的连接函数

我正在尝试在仅由字符串(表示二进制float)组成的numpy数组上使用join函数来获取连接的字符串,以便使用numpy.fromstring函数,但join函数似乎无法正常工作。知道为什么吗?我可以使用哪个替代函数来做到这一点?这是一个独立的例子来说明我的问题:importnumpyasnpnb_el=10table=np.arange(nb_el,dtype='float64')printtablebinary=table.tostring()binary_list=map(''.join,zip(*[iter(binary)]*table.dtype.itemsize))pri

python - NumPy:为什么需要显式复制一个值?

arr=np.arange(0,11)slice_of_arr=arr[0:6]slice_of_arr[:]=99#slice_of_arrreturnsarray([99,99,99,99,99,99])#arrreturnsarray([99,99,99,99,99,99,6,7,8,9,10])如上例所示,您不能直接更改slice_of_arr的值,因为它是arr的View,而不是新变量。我的问题是:为什么NumPy会这样设计?每次都需要.copy然后赋值会不会很乏味?我能做些什么来摆脱.copy?如何更改NumPy的默认行为? 最佳答案