'and'(布尔值)与 '

What explains the difference in behavior of boolean and bitwise operations on lists vs NumPy arrays? 我对正确使用感到困惑&vsand在Python中,见下面的例子。 mylist1 = [True, True, True, False, True] mylist2 = [False, True, False, True, False] >>> len(mylist1) == len(mylist2) True # ---- Example 1 ---- >>> mylist1 and mylist2 [False, True, False, True, False] # I would have expected [False, True, False, False, False] # ---- Example 2 ---- >>> mylist1 & mylist2 TypeError: unsupported operand type(s) for &: 'list' and 'list' # Why not just like example 1?...

'dataFrame'对象没有属性'排序'

我在这里遇到一些问题,在我的python软件包中我安装了numpy,但我仍然有这个错误: ‘DataFrame’ object has no attribute ‘sort’ 任何人都可以给我一些想法。 这是我的代码: final.loc[-1] =['', 'P','Actual'] final.index = final.index + 1 # shifting index final = final.sort() final.columns=[final.columns,final.iloc[0]] final = final.iloc[1:].reset_index(drop=True) final.columns.names = (None, None) 答案 sort()被弃用的数据范围以支持这两个: sort_values()到sort by column(s) sort_index()到sort by the index sort()在熊猫中被弃用(但仍然可用),并引入0.17(2015-10-09)sort_values()和sort_index()。它从pandas中删除,版本为0.20(2017-05-05)。 来自: stackoverflow.com

'numpy.ndarray'对象没有属性'索引'

我正在尝试找到V的索引,但它总是给我的: 'numpy.ndarray' object has no attribute 'index' 我试过了: TypeError:切片索引必须是整数或没有整数或具有__index__方法。如何解决? 如何在数组中找到数组的索引。 查找给定列表中包含python的项目的索引 他们都没有回答我的问题 v = np.random.randn(10) print(v) maximum = np.max(v) minimum = np.min(v) print(maximum, minimum) v.index(maximum, minimum) 编辑:哦,糟糕,我把"ma"而不是"maximum my bad"。 答案 首先,index是列表方法。这里v是一个数组,您需要执行以下操作: v = np.random.randn(10) print(v) maximum = np.max(v) minimum = np.min(v) print(maximum, minimum) index_of_maximum = np.where(v == maximum) index_of_minimum = np.where(v == minimum) 使用这些索引获取元素: v[index_of_minimum] v[index_of_maximum] 使用断言验证: assert(v[index_of_maximum] == v.max()) assert(v[index_of_minimum] == v.min()) 来自: stackoverflow.com

“double_scalars 中遇到无效值”警告,可能是 numpy

当我运行代码时,我会收到这些警告,总是以四个为一组,偶尔出现。 Warning: invalid value encountered in double_scalars Warning: invalid value encountered in double_scalars Warning: invalid value encountered in double_scalars Warning: invalid value encountered in double_scalars 这是 Numpy 警告吗?什么是双标量? 我使用 Numpy min(), argmin(), mean() and random.randn() 我也使用 Matplotlib 答案 看起来像是浮点计算错误。numpy.seterr函数来获取有关发生位置的更多信息。 来自: stackoverflow.com

“numpy.float64”对象不可迭代

我正在尝试迭代使用 numpy.linspace 生成的值数组: slX = numpy.linspace(obsvX, flightX, numSPts) slY = np.linspace(obsvY, flightY, numSPts) for index,point in slX: yPoint = slY[index] arcpy.AddMessage(yPoint) 这段代码在我的办公室计算机上运行良好,但今天早上我在家中的另一台计算机上工作时出现了以下错误: File "C:\temp\gssm_arcpy.1.0.3.py", line 147, in AnalyzeSightLine for index,point in slX: TypeError: 'numpy.float64' object is not iterable slX只是一个浮点数组,脚本在打印内容时没有问题——只是,显然是在迭代它们。 答案 numpy.linspace()给你一个一维 NumPy 数组。 >>> my_array = numpy.linspace(1, 10, 10) >>> my_array array([ 1., 2., 3., 4., 5., 6., 7., 8., 9., 10.]) 所以: for index,point in my_array 无法工作。 >>> two_d = numpy....

“ValueError:对象对于所需数组来说太深”是什么意思以及如何修复它?

我正在尝试这样做: h = [0.2, 0.2, 0.2, 0.2, 0.2] Y = np.convolve(Y, h, "same") Y看起来像这样: 这样做时我收到此错误: ValueError: object too deep for desired array 为什么是这样? 我的猜测是因为不知何故convolve函数没看到Y作为一维数组。 答案 这Y屏幕截图中的数组不是 1D 数组,它是一个 300 行 1 列的 2D 数组,如其所示shape存在(300, 1)。 要删除额外的维度,您可以将数组切片为Y[:, 0]。np.reshape(a, a.size)。 将 2D 数组转换为 1D 的另一个选项是flatten()函数来自numpy.ndarray模块,不同之处在于它复制了数组。 来自: stackoverflow.com

“克隆”行或列向量

有时,将行或列向量"克隆"到矩阵很有用。通过克隆,我的意思是转换一个行矢量,例如 [1, 2, 3] 进入矩阵 [[1, 2, 3], [1, 2, 3], [1, 2, 3]] 或列矢量,例如 [[1], [2], [3]] 进入 [[1, 1, 1] [2, 2, 2] [3, 3, 3]] 在Matlab或八度中,这很容易完成: x = [1, 2, 3] a = ones(3, 1) * x a = 1 2 3 1 2 3 1 2 3 b = (x') * ones(1, 3) b = 1 1 1 2 2 2 3 3 3 我想在numpy中重复一次,但没有成功 In [14]: x = array([1, 2, 3]) In [14]: ones((3, 1)) * x Out[14]: array([[ 1....

“扩展” Numpy ndarray的好方法?

是否有"扩展" Numpy Ndarray的好方法?说我有这样的ndarray: [[1 2] [3 4]] 我希望每行都通过填充零来包含更多元素: [[1 2 0 0 0] [3 4 0 0 0]] 我知道必须有一些蛮力的方法(例如,用零构建一个较大的数组,然后从旧小数组中复制元素),只是想知道是否有Pythonic方法可以这样做。尝试过numpy.reshape但没有工作: import numpy as np a = np.array([[1, 2], [3, 4]]) np.reshape(a, (2, 5)) Numpy抱怨:ValueError: total size of new array must be unchanged 答案 有索引技巧r_和c_。 >>> import numpy as np >>> a = np.array([[1, 2], [3, 4]]) >>> z = np.zeros((2, 3), dtype=a.dtype) >>> np.c_[a, z] array([[1, 2, 0, 0, 0], [3, 4, 0, 0, 0]]) 如果这是绩效关键代码,您可能更喜欢使用等效的np....

“列表”对象没有属性“形状”

如何创建一个数组到numpy数组? def test(X, N): [n,T] = X.shape print "n : ", n print "T : ", T if __name__=="__main__": X = [[[-9.035250067710876], [7.453250169754028], [33.34074878692627]], [[-6.63700008392334], [5.132999956607819], [31.66075038909912]], [[-5.1272499561309814], [8.251499891281128], [30.925999641418457]]] N = 200 test(X, N) 我会遇到错误 AttributeError: 'list' object has no attribute 'shape' 所以,我认为我需要将X转换为numpy阵列? 答案 使用numpy.array使用shape属性。 >>> import numpy as np >>> X = np.array([ ... [[-9.035250067710876], [7.453250169754028], [33.34074878692627]], ... [[-6.63700008392334], [5.132999956607819], [31.66075038909912]], ... [[-5.1272499561309814], [8.251499891281128], [30.925999641418457]] ... ]) >>> X....

`typeError:无效类型促销

我创建了一个数组: Ticket_data = np.empty((0,7), dtype='str,datetime64[m],datetime64[m],str,str,str,str') 我试图用以下数据附加数据 lineitem = [str(data[0][0]), OpenDT, CloseDT, str(data[0][11]), str(data[0][12]), str(data[0][13]), str(data[0][14])] 在哪里OpenDT和CloseDT是与np.datetime64(DTstring, 'm') 我遇到了错误: Traceback (most recent call last): File "Daily Report.py", line 25, in <module> np.append(Ticket_data, np.array([lineitem]), axis=0) File "C:\Python27\lib\site-packages\numpy\lib\function_base.py", line 3884, in append return concatenate((arr, values), axis=axis) TypeError: invalid type promotion 编辑: print np.array([lineitem]) 输出 [['21539' '2015-06-30T10:46-0700' '2015-06-30T10:55-0700' 'Testtext' 'Testtext2' 'Testtext3' 'Testtext5']] 和 print np.array([lineitem], dtype=Ticket_data.dtype) 输出 [[('', 245672259890L, datetime.datetime(1970, 1, 1, 0, 0), '', '', '', '') ('', datetime....

2D数组索引

我该如何做一些用作索引的数组的索引?我有以下六个2D阵列,例如 array([[2, 0], [3, 0], [3, 1], [5, 0], [5, 1], [5, 2]]) 我想将这些数组用作索引,并将值10放在新的空矩阵的相应索引中。输出应该看起来像这样 - array([[ 0, 0, 0], [ 0, 0, 0], [10, 0, 0], [10, 10, 0], [ 0, 0, 0], [10, 10, 10]]) 到目前为止,我已经尝试了这个 - from numpy import* a = array([[2,0],[3,0],[3,1],[5,0],[5,1],[5,2]]) b = zeros((6,3),dtype ='int32') b[a] = 10 但这给了我错误的输出。 答案 In [1]: import numpy as np In [2]: a = np.array([[2,0],[3,0],[3,1],[5,0],[5,1],[5,2]]) In [3]: b = np.zeros((6,3), dtype='int32') In [4]: b[a[:,0], a[:,1]] = 10 In [5]: b Out[5]: array([[ 0, 0, 0], [ 0, 0, 0], [10, 0, 0], [10, 10, 0], [ 0, 0, 0], [10, 10, 10]]) Why it works:...

2D阵列matplotlib的配色图

因此,我认为这真的很简单,但是在一个可理解的示例中,我一直很难找到自己想要的东西。 基本上,我想制作相图,因此,假设我有一个2D阵列,那么我如何才能让matplotlib将其转换为可以将标题,轴和传说(颜色棒)连接到的绘图。 我正在寻找一种非常简单的裸骨解决方案,该解决方案仅使用所需的内容,这些骨骼可以与任何2D阵列一起使用。 我敢肯定这很简单,而且我只是以某种方式很厚,但是我确实遇到了很多麻烦。 我一直在用这些示例进行工具,但是它们似乎并不适合我要做的事情:我喜欢这张图的一般外观,我只是想能够通过2Darray并拥有这个相同的结果: import numpy as np import matplotlib as ml import matplotlib.pyplot as plt H = [[1,2,3,4][5,6,7,8][9,10,11,12][13,14,15,16]] fig = plt.figure(figsize=(6, 3.2)) ax = fig.add_subplot(111) ax.set_title('colorMap') X,Y = np.meshgrid(xedges, yedges) plt.pcolormesh(X, Y, H) ax.set_aspect('equal') cax = fig.add_axes([0.12, 0.1, 0.78, 0.8]) cax.get_xaxis().set_visible(False) cax.get_yaxis().set_visible(False) cax.patch.set_alpha(0) cax.set_frame_on(False) plt.colorbar(orientation='vertical') plt.show() 答案 恐怕您发布的示例不起作用,因为X和Y没有定义。所以而不是pcolormesh让我们使用imshow: import numpy as np import matplotlib.pyplot as plt H = np.array([[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12], [13, 14, 15, 16]]) # added some commas and array creation code fig = plt....

3D 中的 Numpy 网格

Numpy 的网格网格对于将两个向量转换为坐标网格非常有用。 答案 这是meshgrid的源代码: def meshgrid(x,y): """ Return coordinate matrices from two coordinate vectors. Parameters ---------- x, y : ndarray Two 1-D arrays representing the x and y coordinates of a grid. Returns ------- X, Y : ndarray For vectors `x`, `y` with lengths ``Nx=len(x)`` and ``Ny=len(y)``, return `X`, `Y` where `X` and `Y` are ``(Ny, Nx)`` shaped arrays with the elements of `x` and y repeated to fill the matrix along the first dimension for `x`, the second for `y`....

array.shape() 给出错误元组不可调用

我有一个名为的 2D numpy 数组results,它包含自己的数据数组,我想进入它并使用每个列表: for r in results: print "r:" print r y_pred = np.array(r) print y_pred.shape() 这是我得到的输出: r: [ 25. 25. 25. 25. 25. 25. 26. 26. 26. 26. 26. 22. 27. 27. 42. 23. 23. 23. 28. 28. 28. 44. 29. 29. 30. 30. 30. 18. 18. 18. 19. 30. 17. 17. 17. 17. 2. 19. 2. 17. 17. 17. 17. 17. 17. 4. 17. 17. 41. 7. 17....

attributeError:'numpy.ndarray'对象没有属性'列'

我正在尝试创建一个函数,以删除彼此高度相关的功能。但是,我遇到了错误''AttributeError: 'numpy.ndarray' object has no attribute 'columns' '' ... 我只想打电话给大pandas读取列号。接下来我该怎么办? import pandas as pd import numpy as np def remove_features_identical(DataFrame,data_source): n=len(DataFrame.columns) print 'dealing with %d features of %s data......... \n' % (n,data_source) remove_ind = [] R = np.corrcoef(DataFrame.T) for i in range(n-1): for j in range(i+1,n): if R[i,j]==1: remove_ind.append(j) DataFrame.drop(remove_ind, axis=1, inplace=True) DataFrame.drop(remove_ind, axis=1, inplace=True) print ('deleting %d columns with correration factor >0.99') % ( len(remove_ind)) return DataFrame if __name__ == "__main__": # load data and initialize y and x from train set and test set df_train = pd....