今天在调用某接口查询企业名称的时候碰到奇怪的问题。 在页面上输入拼音能搜索到数据,输入汉字则不行。 询问了对方的技术人员,他说我传的内容是空的,这就奇怪了,我后台明明已经接收到“浙江”这个值了。...,从单元测试调用这个方法是正常的,而从页面上通过ajaix调用这个方法还是找不到数据,注意:这里的关键字“浙江”已经写死在代码里了,也就是说不管传什么参数都是一样的。...它们之间的区别仅仅是调用的路径不同,一个是从单元测试调用的,一个是从页面上调用的。...,返回正常的结果: sendUrl:http://****/APIService/search/advanceSearchNew?...页面调用 通过页面ajax调用接口: 参数也能正常传到Controller,问题是sendUrl我已经在方法里写死了,却得到了不一样的结果: /** * 获取公司列表
<!DOCTYPE html> <html> <head lang=”en”> <meta charset=”UTF-8″> <titl...
某位 A 同学发了我一张截图,问为何结果中出现了负数? ? 看了图,我第一感觉就是数据溢出了。数据超出能表示的最大值,就会出现奇奇怪怪的结果。...在开始之前,先总结一下上图会引出的话题: Python 3 中整数的上限是多少?Python 2 呢? Numpy 中整数的上限是多少?整数溢出该怎么办?...理论上,Python 3 中的整数没有上限(只要不超出内存空间)。这就解释了前文中直接打印两数相乘,为什么结果会正确了。...对照前文的截图,里面只有两组数字相乘时没有溢出:100007*4549、100012*13264,其它数据组都溢出了,所以出现奇怪的负数结果。...100000] w = [500000] # 一个溢出的例子: a = np.array(q) b = np.array(w) print(a*b) # 产生溢出,结果是个奇怪的数值 # 一个解决的例子
调试看下结构 2.3 副本和视图 副本是一个数据的完整的拷贝,如果我们对副本进行修改,它不会影响到原始数据,物理内存不在同一位置。...视图是数据的一个别称或引用,通过该别称或引用亦便可访问、操作原有数据,但原有数据不会产生拷贝。如果我们对视图进行修改,它会影响到原始数据,物理内存在同一位置。...视图一般发生在: 1、numpy 的切片操作返回原数据的视图。 2、调用 ndarray 的 view() 函数产生一个视图。...副本一般发生在: Python 序列的切片操作,调用deepCopy()函数。 调用 ndarray 的 copy() 函数产生一个副本。...操作函数 numpy.sort() 函数返回输入数组的排序副本 numpy.argsort() 函数返回的是数组值从小到大的索引值 numpy.lexsort() 用于对多个序列进行排序。
你已经在运用线性系统(Linear System)的思维了: 几个购物车里的东西,分开结账的几张小票的总和,和一次算总帐的结果相同。 线性系统还有更复杂的情况。...(奇怪的是,妹纸可以超级熟练的处理各种非线性的购物系统,甚至并行处理多个。上帝拿走的那根肋骨,一定是非线型的……) “一个” 我们即将要改变我们对一个单位的数据的理解。...举出一个数据 做为程序员,最直接会列举出一个数据,比如一个整数,一个浮点数。 那一个结构体呢?C语言中的结构体可以包含有多个元素。我们知道,每个元素分开写出来,并不是结构体的完整数据。...即使是列表这样的数据容器,如果固定每个位置数据的意义,那么一个列表也可以算是“一个”数据。比如丈夫购物车为[1,2],妻子的购物车为[2,3]。 这种包含了多个元素的数据,称为向量(vector)。...更方便的是调用现有的库函数,比如Python中的numpy: # By Vamei import numpy as np # matrix a = np.matrix([[5, 3],[2, 4]
percentile这个函数还需要额外传入一个int,表示我们想要得到的百分位数,比如我们想要知道50%位置上的数,则输入50。 ?...sum,min,max很好理解,argmin和argmax的意思是获取最小值和最大值的索引。 ? 这里返回的索引有点奇怪,和我们想的不同,居然不是一个二维的索引而是一维的。...那么在上面这些计算的方法当中,如果存在bool类型的值,都会被转化成1和0进行的计算。 我们灵活运用这点会非常方便,举个例子,假设我们要统计一批数据当中有多少条大于0。我们利用sum会非常方便: ?...排序 Python原生的数组可以排序,numpy当中的数组自然也不例外。我们只需要调用sort方法就可以排序了,不过有一点需要注意,numpy中的sort默认是一个inplace的方法。...也就是说我们调用完了sort之后,原数组的值就自动变化了。 ? 如果写成了arr = arr.sort()会得到一个None,千万要注意。 ?
为此,z 步幅设置为-1,并且数组的基指针指向第一个像素的红色值-比数组内存开始的位置提前两个像素,即第一个像素的蓝色值所在的位置。...如果您给出 BGR 数据并谎称它是 RGB,则代码将产生与给出实际 RGB 数据时相同的结果。 • 同样,调整大小时,数组维度代表宽度和高度的顺序并不重要。...一旦我们将带有默认步长的 numpy 数组“附加”到输入和输出数据上,我们对 cv2.resize 的调用将快 100 倍!...但我猜测,具有奇怪布局的 numpy 数组也可能在其他地方出现,因此这种技巧可能在其他地方也是相关的。...Rust 有一个"unsafe"关键字,编译器强制你意识到你正在调用一个会破坏正常安全性保证的 API。但是 Rust 编译器并不会让你把包含 unsafe 代码块的函数标记为"unsafe"。
会滚动到特定位置。 ...numpy.mod() numpy.mod() 计算输入数组中相应元素的相除后的余数。 函数 numpy.remainder() 也产生相同的结果。 ...视图是数据的一个别称或引用,通过该别称或引用亦便可访问、操作原有数据,但原有数据不会产生拷贝。如果我们对视图进行修改,它会影响到原始数据,物理内存在同一位置。 ...视图一般发生在: 1、numpy 的切片操作返回原数据的视图。2、调用 ndarray 的 view() 函数产生一个视图。 ...副本一般发生在: Python 序列的切片操作,调用deepCopy()函数。调用 ndarray 的 copy() 函数产生一个副本。 无复制 简单的赋值不会创建数组对象的副本。
Numpy基础 1、创建ndarray数组 使用array函数,它接受一切序列型的对象,包括其他数组,然后产生一个新的Numpy数组。 嵌套序列将会被转换成一个多维数组。...(2)创建DataFrame: 最常用的一种方法是直接传入一个等长列表或numpy数组组成的字典: 结果DataFrame会自动加上索引(添加方法与Series一样),且全部列会被有序排列。...如果赋值的是一个Series,则对应的索引位置将被赋值,其他位置的值被赋予空值。...3、算数运算和数据对齐 (1)Series 与Series之间的运算 将不同索引的对象进行算数运算,在将对象进行相加时,如果存在时,则结果的索引就是该索引的并集,而结果的对象为空。...这些运算默认都是针对于行的运算,通过使用axis=1进行列的运算。 Describe既不是约简型也不是累计型,他是用于一次性产生多个汇总统计指标的运算。
其中,TypeError: ‘numpy.ndarray’ object is not callable这个报错可能会让很多人感到困惑。...这就像是你期待一个函数去执行某些操作,结果却发现你把数组当成了函数来调用,这显然是不符合Python和NumPy的规则的。那么,我们该如何解决这个令人头疼的问题呢?下面我们就来深入探讨一下。...一旦确定了错误的位置,就需要调整代码逻辑,确保正确地使用ndarray对象,而不是将其当作函数调用。 二、解决方法: 2.1 方法一: 检查变量名冲突。...首先通过一个简单的报错示例展示了这个错误是如何产生的,即错误地将ndarray对象当作可调用对象进行调用。...然后从多个方面分析了报错的原因,包括变量名冲突、函数返回值处理不当、复杂表达式中的错误操作以及类内部方法的实现错误等。
学过操作系统的同学都知道,线程是现代操作系统底层一种轻量级的多任务机制。一个进程空间中可以存在多个线程,每个线程代表一条控制流,共享全局进程空间的变量,又有自己私有的内存空间。 多个线程可以同时执行。...但下面的例子可能会让你对“并行”的真实性产生怀疑。...,只是为了让它产生一定的计算量,使运算时间开销远大于线程创建、切换的时间开销。...读到这,有同学可能会奇怪了:我在使用 python 多线程写爬虫时可从来没有这种问题啊——用 4 个线程下载 4 个页面的时间与单线程下载一个页面的时间相差无几。...发生阻塞 IO 时,调用方线程会被挂起,无法进行任何操作,直至内核返回;IO 函数一般是原子性的,这确保了调用的线程安全性。因此在大多数阻塞 IO 发生时,解释器没有理由加锁。
对于矩阵来说,dot是矩阵的点积。 而vdot是对应位置的元素乘积求和。...如果步长为虚数,表示产生的个数长度print mgrid[-5:5:3j] #结果:[-5. 0. 5.]print mgrid[-5:5:3] #结果:[-5 -2 1 4]print '*'...如果步长为虚数,表示产生的个数长度。 对照结果即可知道函数的功能。...和numpy.save函数(推荐在不需要查看保存数据的情况下使用) 以NumPy专用的二进制类型保存数据,这两个函数会自动处理元素类型和shape等信息, 使用它们读写数组就方便多了,但是numpy.save...保存为numpy专用二进制格式后,就不能用notepad++打开(乱码)看了,这是相对tofile内建函数不好的一点 numpy.savez函数 如果你想将多个数组保存到一个文件中的话,可以使用numpy.savez
而第二个 A / cal.reshape(1, 4) 指令则调用了 numpy 中的广播机制。这里使用 的矩阵 除以 的矩阵 。...来看一些广播的例子: 在 numpy 中,当一个 的列向量与一个常数做加法时,实际上会将常数扩展为一个 的列向量,然后两者做逐元素加法。结果就是右边的这个向量。...在进行运算时,会先将 矩阵水平复制 次,变成一个 的矩阵,然后再执行逐元素加法。 广播机制的一般原则如下: 首先是 numpy 广播机制 这里的广播和播音广播是完全不同的,它的要求是什么呢?...可以使用代码 A.shape[-1] 即矩阵维度元组中的最后一个位置的值,就是矩阵维度的最后一个维度,比如卡路里计算的例子中,矩阵 后缘维度的轴长度是4,而矩阵 的后缘维度也是4,故满足了后缘维度轴长度相符的条件...缺点的原因,由于广播巨大的灵活性,有时候对于广播的特点以及广播的工作原理这些细节不熟悉的话,可能会产生很细微或者看起来很奇怪的 bug。
5、结果: 图表的名字叫figure1,左下面有几个按钮,都是很实用的东西,右下角会显示当前鼠标左边,也很方便。...一个figure里也能显示多个图表,我们可以用如下函数来分割一个figure: subplot(3,4,6) 这样就会把当前的figure分割成3行4列的表,而激活其中的第6张,即第2行第3张。...以后的plot都是在这一个子表上生成的,如果需要更换则可以重新输入subplot命令来确定其新的位置。...移动轴线 这段有点小复杂,暂时不想具体了解奇奇怪怪的函数调用,姑且先记录下用法和原理: ax = gca() ax.spines['right'].set_color('none') ax.spines...legend函数来确定图例的位置,一般就是'upper left'就好了。
,对副本的操作不会影响到原数组ravel:返回一个连续的扁平数组(即展开的一维数组),与 flatten不同,它返回的是数组视图注:ravel修改视图会影响原数组reshape我们已经在之前的教程之中介绍过了...:沿着指定的轴向后滚动至规定的位置swapaxes:对数组的轴进行对换numpy.transpose()numpy.transpose() 用于对换多维数组的维度,比如二维数组使用此方法可以实现矩阵转置...:原数组 [[0 1 2 3]]调用 broadcast_to 函数之后:[[0 1 2 3] [0 1 2 3] [0 1 2 3] [0 1 2 3]]numpy.expand_dims()在指定位置插入新的轴...(行方向)分割数组:split:将一个数组分割为多个子数组hsplit:将一个数组水平分割为多个子数组(按列)vsplit:将一个数组垂直分割为多个子数组(按行)连接数组操作numpy.concatenate...((a,b))print (c)---------------------------输出结果如下:[[1 2] [3 4] [5 6] [7 8]]分割数组numpy.split() 沿指定的轴将数组分割为多个子数组
X == Y 对张量中的所有元素进行求和,会产生一个单元素张量。 X.sum() 三、广播机制 在上面的部分中,我们看到了如何在相同形状的两个张量上执行按元素操作。...虽然我们讨论的是矩阵的索引,但这也适用于向量和超过2个维度的张量。 X[0:2, :] = 12 X 五、节省内存 运行一些操作可能会导致为新结果分配内存。...这是因为Python首先计算Y + X,为结果分配新的内存,然后使Y指向内存中的这个新位置。...通常情况下,我们希望原地执行这些更新; 如果我们不原地更新,其他引用仍然会指向旧的内存位置,这样我们的某些代码可能会无意中引用旧的参数。 幸运的是,执行原地操作非常简单。...A = X.numpy() B = torch.tensor(A) type(A), type(B) 要将大小为1的张量转换为Python标量,我们可以调用item函数或Python的内置函数。
,d为真实值,o为输出值,n为学习率 Python实现 Rosenblatt神经元的实现 通过Rosenblatt感知器的数学模型,可以很简单的使用numpy库实现感知机功能 import numpy...0时,返回True,与此相似的还有.any(),只要有一个元素满足即返回True 需要注意的是这里的==不可改为is,否则会出现奇怪的情况 //前馈传播 def Feedforward...T表示矩阵的转置,注意二维矩阵转置才是符合要求的,一维矩阵的转置行为有点奇怪。...: StartLocation是一个坐标list,表示月原点(圆心)的位置 RadiusList是一个存储了大圈的半径和小圈的半径list Orientation表示月的朝向,+表示向上,-表示向下...结果 红线代表感知器的学习结果,可以看到很好的划分出了两个半月之间的界限
x,那么它所做的事情就是对x中的每给值求正弦值,并且把结果保存到x中的对应的位置中。...NumPy中有众多的ufunc函数为我们提供各式各样的计算。除了sin这种单输入函数之外,还有许多多个输入的函数,add函数就是一个最常用的例子。...它接受第3个参数指定计算结果所要写入的数组,如果指定的话,add函数就不再产生新的数组。...,不过要注意如果你的算式很复杂,并且要运算的数组很大的话,会因为产生大量的中间结果而降低程序的运算效率。...例如:假设a b c三个数组采用算式x=a*b+c计算,那么它相当于: t = a * b x = t + c del t 也就是说需要产生一个数组t保存乘法的计算结果,然后再产生最后的结果数组x。
然而,如果你在学 Python 之前学过其他面向对象语言,你可能会觉得使用len(collection)而不是collection.len()很奇怪。...基本上,bool(x)调用x.__bool__()并使用结果。如果没有实现__bool__,Python 会尝试调用x.__len__(),如果返回零,bool返回False。...通常,+的两个操作数必须是相同的序列类型,并且它们都不会被修改,但作为连接结果会创建一个相同类型的新序列。 要连接同一序列的多个副本,可以将其乘以一个整数。...警告 当包含可变项的序列a尝试执行a * n时要小心,因为结果可能会让你感到惊讶。...到目前为止,我们已经讨论了在序列中使用普通的+和*运算符,但还有+=和*=运算符,它们会根据目标序列的可变性产生非常不同的结果。接下来的部分将解释其工作原理。
在几何中,向量将大小和方向的潜在变化存储到一个点。 例如,向量 [3, -2] 表示向右移 3 个单位距离和向下移 2 个单位距离。而具有多个维度的向量称为矩阵。...Scalar addition 元素操作 在诸如加法,减法和除法的元素操作中,相应位置的值被重新组合以产生新的向量。 向量 A 中的第一个值与向量 B 中的第一个值配对。...,向量场则表示了该点 可能会移动多远。...(3维或4维),事情会变得有点奇怪,但是现在我们不用担心。...了解二维上的操作是个很好的开始。 矩阵Hadamard乘积 矩阵的 Hadamard 乘积是一个元素运算,就像向量一样。 相应位置的值通过乘法运算来产生一个新的矩阵。