我正在编写几行Python代码,执行以下操作:
我有两个数组a和b,b包含(非严格的)递增整数。
我想从a中提取b的值为20的倍数,但我不想重复,因为如果b有值:...,40,40,41,.我只想要第一个值,对应的是40,而不是第二个。
这就是为什么a[b%20==0]不能工作的原因。
我一直在用:
factors = [20*i for i in xrange(1,int(b[-1]/20 +1))]
sample = numpy.array([a[numpy.nonzero(b==factor)[0][0]] for factor in factors])
但它既缓慢,又相当不雅。
有一种
我希望有一个只填充了第一列,其余元素都是Null的int矩阵。对不起,我有R的背景。因此,我知道如果我留下一些Null元素,以后管理它们会更容易。同时,如果我离开0,以后会有很多问题。
我有以下代码:
import numpy as np
import numpy.random as random
import pandas as pa
def getRowData():
rowDt = np.full((80,20), np.nan)
rowDt[:,0] = random.choice([1,2,3],80) # Set the
我试图通过指定某些条件来创建numpy.array的“掩码”。Python甚至有很好的语法,如下所示:
>> A = numpy.array([1,2,3,4,5])
>> A > 3
array([False, False, False, True, True])
但是如果我有一个标准列表而不是一个范围:
>> A = numpy.array([1,2,3,4,5])
>> crit = [1,3,5]
我不能这么做:
>> A in crit
我必须做一些基于清单理解的事情,比如:
>> [a in crit f
我需要检查numpy数组中的单个元素,我需要知道它是否被元素屏蔽了。
y,x=np.mgrid[slice(0,25, 1),slice(0,43, 1)]
z=pp[y,x,_mapa_]
z = np.ma.masked_where(_mascara<0.5,z)
for _x in range(24,0,-1):
for _y in range(0,43,1):
print z[-_x,_y] NEED TO NOW IF IS MASKED OR NOT, TO THE NEXT LEVEL
谢谢
我想从一个大约有一百万个条目的numpy数组中删除一些条目。
这段代码可以做到这一点,但需要很长时间:
a = np.array([1,45,23,23,1234,3432,-1232,-34,233])
for element in a:
if element<(-100) or element>100:
some delete command.
我可以用其他方式来做这个吗?
我有一个numpy像素数组( 0或255),我使用.where提取其所在位置的元组。现在,我想使用这些元组将1添加到单独的2D numpy数组中。是使用如下所示的for循环的最佳方式,还是有更好的类似于numpy的方式?
changedtuples = np.where(imageasarray > 0)
#If there's too much movement change nothing.
if frame_size[0]*frame_size[1]/2 < changedtuples[0].size:
print "No change- too m
我有一个包含300行和4列的IoU值的numpy数组。如果行中的每个元素都小于0.5,则选择行。我编写了一个尝试这样做的代码,但是它返回每个元素都为零的行。
import numpy as np
iou = np.random.rand(300,4)
negative_boxes = []
for x in range(len(iou)):
if iou[x,:].any() < 0.5:
negative_boxes.append(iou[x])
如何选择每个元素都小于0.5的行?
当我在完全屏蔽的掩码数组中计算加权平均值时,我得到了weights=None或weights=1的不同结果:
import numpy.ma as ma
a = ma.arange(2.)
a[:] = ma.masked # fully masked
ma.average(a) # returns NaN, which is ok since all elements are masked
ma.average(a, weights=None, returned=True)
如何测试numpy数组中的每个元素是否都被屏蔽了?这是我想要做的:
x = #is a maksed numpy array
masked_min = numpy.ma.min(x)
if masked_min IS NOT A MASKED ELEMENT:
#do some stuff only if masked_min is a value
在实践中,我看到这样的情况:
>>> x = numpy.ma.array(numpy.array([1,2,3]),mask=[True,True,True])
>>> masked_min = numpy
当获取numpy数组中特定列的日志时,即logSFROIIdC = np.log(data_dC[:, 9]),编译器返回错误:
-c:13: RuntimeWarning: divide by zero encountered in log.
现在,我知道为什么会发生这种情况,即log(-1) = Math Error。
然而,我希望能够调用一些东西或编写一些代码,然后跳过数组中会导致此错误的任何值,然后完全忽略该行。从而允许该数据列再次可用。
我已经尝试了各种方法,这是向社区请教的最后手段。
我有一个数组“可移动”,其中包含另一个数组" all“中的几个数字,其中包含从0到k的所有数字。
我想删除A中列出的可移动的所有数字。
All = np.arange(k)
removable = np.ndarray([1, 3, 4 , 7, 9, ..., 200])
for i in removable:
if i in All:
All.remove(i)
ndarray没有remove属性,但是我确信numpy中有一个简单的方法来解决这个问题,但是我在文档中找不到它。
我试图对齐抖动的图像,但我的代码一直给我以下错误:
掩码:“numpy.float64”对象没有“”AttributeError“”属性“”
代码如下:
import numpy as np
from astropy.io import fits
import glob
from astropy.stats import sigma_clip
from reproject.mosaicking import find_optimal_celestial_wcs
from reproject import reproject_interp
# In the line below, you ma
下面是我的函数,我知道for循环很慢,在numpy中肯定有更快/更好的方法来做这件事
import numpy as np
def heat(u):
my_u = np.empty_like(u)
np.copyto(my_u, u)
for row in range(1,u.shape[0]-1):
for col in range(1,u.shape[1]-1):
my_u[row, col] = (u[row-1][col] + u[row+1][col]
+ u[row][col-1] + u[
我目前正在进行一个使用python为海洋模型创建CC和CI的项目。我使用了mpl_toolkits.basemap的插值。以下是我的代码:
sal_arr=[]
for k in xrange(len(depth)):
salty=data.variables['salt'][k,:,:]
salt=mp.interp(salty,lon,lat,lon_rho,lat_rho,checkbounds=False,masked=False,order=1)
sal_arr.append(salt)
当我在列表中得到我的插值数据时,我得到(我的部分