草庐IT

多维度

全部标签

python - 多个维度的 Numpy 滚动

我需要通过算法的3D位移向量移动3D数组。截至目前,我正在使用这种(公认的非常丑陋的)方法:shiftedArray=np.roll(np.roll(np.roll(arrayToShift,shift[0],axis=0),shift[1],axis=1),shift[2],axis=2)这行得通,但意味着我要打3卷!(根据我的分析,我58%的算法时间花在了这些上)来自Numpy.roll的文档:Parameters:shift:intaxis:int,optional参数中没有提到类数组...所以我不能进行多维滚动?我以为我可以调用这种函数(听起来像Numpy做的事):np.rol

python - Numpy 多维数组索引交换轴顺序

我正在处理多维Numpy数组。当使用其他索引数组访问这些数组时,我注意到一些不一致的行为。例如:importnumpyasnpstart=np.zeros((7,5,3))a=start[:,:,np.arange(2)]b=start[0,:,np.arange(2)]c=start[0,:,:2]print'a:',a.shapeprint'b:',b.shapeprint'c:',c.shape在这个例子中,我得到了结果:a:(7,5,2)b:(2,5)c:(5,2)这让我很困惑。为什么“b”和“c”的尺寸不同?为什么“b”交换轴顺序,而不是“a”?由于大量的单元测试,我已经能够

python - 多维数组行列式

我正在尝试计算一个numpy数组M的行列式,其中np.shape(M)=(N,L,L)类似于:importnumpyasnpM=np.random.rand(1000*10*10).reshape(1000,10,10)dm=np.zeros(1000)for_inxrange(len(dm)):dm[_]=np.linalg.det(M[_])有没有不循环的方法?“N”比“L”大几个数量级。我想到了类似的东西:np.apply_over_axes(np.linalg.det(M),axis=0)有没有更快的方法做我想做的事?我猜循环开销是一个性能瓶颈,因为小矩阵的行列式是一个相对便宜

Python如何使用字符串键索引多维数组,如字典

我想结合numpy的array和原生python的dict的功能,即创建一个可以用字符串索引的多维数组。例如,我可以这样做:dict_2d={'a':{'x':1,'y':2},'b':{'x':3,'y':4}}printdict_2d['a','y']#returns2我知道我可以做dict_2d['a']['x']但从长远来看,我希望能够像对待numpy数组一样对待它们,包括做矩阵乘法等等分层字典不可能。编写一个简单版本的类也不难,我只是使用该类将所有字符串转换为int索引,然后使用numpy,但如果可能,我想使用已经存在的东西。编辑:我不需要令人难以置信的性能。我可能会使用10

python - Numpy:使用 reshape 或 newaxis 添加维度

ndarray.reshape或numpy.newaxis均可用于向数组添加新维度。它们似乎都创建了一个View,使用一个而不是另一个有什么理由或优势吗?>>>barray([1.,1.,1.,1.])>>>c=b.reshape((1,4))>>>c*=2>>>carray([[2.,2.,2.,2.]])>>>c.shape(1,4)>>>barray([2.,2.,2.,2.])>>>d=b[np.newaxis,...]>>>darray([[2.,2.,2.,2.]])>>>d.shape(1,4)>>>d*=2>>>barray([4.,4.,4.,4.])>>>carra

python - OpenPyXL 中的列和行维度始终为 None

为什么openpyxl将每一行和每一列维度读取为无?无论表格是通过openpyxl还是在MicrosoftExcel中创建的,情况都是如此。importopenpyxlwb=openpyxl.load_workbook(r'C:\data\MyTable.xlsx')ws=wb.activeprintws.row_dimensions[1].heightprintws.column_dimensions['A'].width打印None和None。这些不是隐藏的列/行。在Excel中查看时,它们显然具有尺寸。我知道用迭代器加载工作簿会阻止创建维度字典,但这会导致键错误,我在这里不使用迭

python - 在python中将平面列表读入多维数组/矩阵

我有一个数字列表,表示另一个程序生成的矩阵或数组的扁平化输出,我知道原始数组的维度,想将这些数字读回到列表列表或NumPy矩阵中。原始数组中可能有超过2个维度。例如data=[0,2,7,6,3,1,4,5]shape=(2,4)printsome_func(data,shape)会产生:[[0,2,7,6],[3,1,4,5]]提前干杯 最佳答案 使用numpy.reshape:>>>importnumpyasnp>>>data=np.array([0,2,7,6,3,1,4,5])>>>shape=(2,4)>>>data.re

Python多维稀疏数组

我正在从事一个需要处理3维大型数组的项目。我使用的是numpy3d数组,但我的大部分条目都将为零,因此会浪费大量内存。Scipysparse似乎只允许二维矩阵。还有其他方法可以存储3D稀疏数组吗? 最佳答案 scipy.sparse有多种格式,但只有几种格式具有一组高效的数字运算。不幸的是,这些是更难扩展的。dok使用索引元组作为字典键。所以这很容易从2d推广到3d或更多。coo有row、col、data属性数组。那么从概念上讲,添加第三个depth(?)很容易。lil可能需要列表中的列表,这可能会变得困惑。但是csr和csc将数组

python - 如何对包含 NaN 的大型多维数组中的每个像素应用线性回归?

我有一个独立变量值的一维数组(x_array),它与具有多个时间步长的3Dnumpy空间数据数组(y_array)中的时间步长相匹配。我的实际数据要大得多:300多个时间步长和高达3000*3000像素:importnumpyasnpfromscipy.statsimportlinregress#Independentvariable:fourtime-stepsof1-dimensionaldatax_array=np.array([0.5,0.2,0.4,0.4])#Dependentvariable:fourtime-stepsof3x3spatialdatay_array=np

Python:在任意维度中使用冒号运算符索引数组

我有一个numpynd数组。我的任务的一个简化版本是从每个轴获取一个向量。举例说明:importnumpyx=numpy.array(range(24)).reshape((2,3,4))x0=x[0,0,:]x1=x[0,:,0]x2=x[:,0,0]但是我不一定知道x的维数。因此,挑战在于如何将冒号:索引运算符放在可变位置。此类语法的示例:n=x.ndimind=list(np.zeros(n))dim=0ind[dim]=':'y=x[ind]或y=indexer.index(x,ind)对于一些模块索引器。我可以写它,但我觉得这一定已经解决了,我不可能是唯一一个想这样做的人。例