草庐IT

NumPy库

全部标签

python - 沿任意维度切片 numpy 数组

假设我有一个(40,20,30)numpy数组,并且我有一个函数,在一些工作之后将沿着选定的输入轴返回输入数组的一半。有自动的方法吗?我想避免这样丑陋的代码:defmy_function(array,axis=0):...ifaxis==0:returnarray[:array.shape[0]/2,:,:]-->(20,20,30)arrayelifaxis=1:returnarray[:,:array.shape[1]/2,:]-->(40,10,30)arrayelifaxis=2:returnarray[:,:,:array.shape[2]/2]-->(40,20,15)ar

python - 通过 Numpy 中的逻辑索引获取矩阵的网格

我正在尝试使用最初在MATLAB中的numpy重写一个函数。在MATLAB中有一个逻辑索引部分如下:X=reshape(1:16,4,4).';idx=[true,false,false,true];X(idx,idx)ans=141316当我尝试在numpy中创建它时,我无法获得正确的索引:X=np.arange(1,17).reshape(4,4)idx=[True,False,False,True]X[idx,idx]#Output:array([6,1,1,6])通过逻辑索引从矩阵中获取网格的正确方法是什么? 最佳答案 你也

python - 如何在 Python 中获取多维 Numpy 数组元素的类型

如何获取多维数组的类型?我处理数组,但考虑到数据类型:string、float、Boolean,我必须调整代码,所以我必须得到类型与维度无关,可以是一维或二维或更多维。数据可以是1d的实数,3d的字符串...我想恢复数组的类型,它是一个真实的,它是一个字符串还是一个bool值......不做Array[0]或Array[0][0][0][0]因为维度可以是多种多样的。或者获取数组第一个元素的方法,无论其维度如何。它与np.isreal一起工作有点修改,但我没有找到像isastring或isaboolean这样的等价物...... 最佳答案

python - list(numpy_array) 和 numpy_array.tolist() 之间的区别

在numpy数组上应用list()与调用tolist()有什么区别?我正在检查两个输出的类型,它们都表明我得到的结果是一个list,但是,输出看起来并不完全相同。是不是因为list()不是numpy特定的方法(即可以应用于任何序列)和tolist()是numpy特定的,只是在这种情况下他们返回相同的东西?输入:points=numpy.random.random((5,2))print"Pointstype:"+str(type(points))输出:Pointstype:输入:points_list=list(points)printpoints_listprint"Points_l

python - Numpy:替换数组中的随机元素

我已经用谷歌搜索了一下,没有找到任何好的答案。问题是,我有一个2dnumpy数组,我想在随机位置替换它的一些值。我找到了一些使用numpy.random.choice创建的答案数组的掩码。不幸的是,这不会创建原始数组的View,因此我无法替换它的值。所以这是我想做的一个例子。假设我有一个带有浮点值的二维数组。[[1.,2.,3.],[4.,5.,6.],[7.,8.,9.]]然后我想替换任意数量的元素。如果我能用参数调整就好了有多少元素将被替换。可能的结果如下所示:[[3.234,2.,3.],[4.,5.,6.],[7.,8.,2.234]]我想不出完成此任务的好方法。感谢您的帮助。

Python:如何强制 1 元素 NumPy 数组为二维数组?

我有一段代码对2DNumPy数组进行切片并返回生成的(子)数组。在某些情况下,切片仅索引一个元素,在这种情况下,结果是一个单元素数组:>>>sub_array=orig_array[indices_h,indices_w]>>>sub_array.shape(1,)我怎样才能强制这个数组以一般方式成为二维的?即:>>>sub_array.shape(1,1)我知道sub_array.reshape(1,1)可以工作,但我希望能够将它应用于sub_array而不必担心元素的数量在里面。换句话说,我想编写一个(轻量级)操作,将shape-(1,)数组转换为shape-(1,1)数组,将sh

python - 在 numpy 数组的元素之间添加一个逗号

我有一个像这样的numpy数组a=['blue''red''green']我希望它变成b=['blue','red','green']我试过了b=a.split('')但它返回错误:'numpy.ndarray'objecthasnoattribute'split' 最佳答案 简单地把它变成一个列表:a=numpy.array(['blue','red','green'])printa>>['blue''red''green']b=list(a)printb>>['blue','red','green']但是为什么你会有一个带有字符

python - 如何使用 numpy 在线性时间内通过唯一值获取累积计数?

考虑以下列表short_list和long_listshort_list=list('aaabaaacaaadaaac')np.random.seed([3,1415])long_list=pd.DataFrame(np.random.choice(list(ascii_letters),(10000,2))).sum(1).tolist()如何按唯一值计算累计计数?我想使用numpy并在线性时间内完成。我希望这可以将时间与我的其他方法进行比较。用我第一个提出的解决方案来说明可能是最简单的defpir1(l):s=pd.Series(l)returns.groupby(s).cumco

python - 如何将 numpy 数组附加到 pandas 数据框

我训练了一个逻辑回归分类器来预测评论是正面的还是负面的。现在,我想将predict_proba函数返回的预测概率附加到包含评论的Pandas数据框中。我尝试做类似的事情:test_data['prediction']=sentiment_model.predict_proba(test_matrix)显然,这行不通,因为predict_proba返回一个2D-numpy数组。那么,最有效的方法是什么?我使用SciKit-Learn的CountVectorizer创建了test_matrix:vectorizer=CountVectorizer(token_pattern=r'\b\w+

python - 在多列上使用 numpy 二维数组从 Pandas 数据框中选择行

数据我有一个包含5列的数据框:起点经纬度(origin_lat,origin_lng)目的地经纬度(dest_lat,dest_lng)根据其他字段计算的分数我有一个矩阵M,其中包含成对的起点和终点纬度/经度。其中一些对存在于数据框中,其他则不存在。目标我的目标有两个:从M中选择数据帧前四列中不存在的所有对,对它们应用函数func(计算得分列),然后将结果附加到现有数据框。注意:我们不应该为已经存在的行重新计算分数。添加缺失的行后,选择新数据帧dfs中选择矩阵M定义的所有行。示例代码#STEP1:Generateexampledatactr_lat=40.676762ctr_lng=-