精华内容
下载资源
问答
  • Python numpy 平方、乘方和平方根函数
    万次阅读
    2018-07-27 00:39:51

    import numpy

    numpy.square()

    pow(x, x)

    numpy.sqrt()

    更多相关内容
  • 今天是Numpy专题的第二篇,我们来进入正题,来看看Numpy的运算。上一篇文章当中曾经提到过,同样大小的数据,使用Numpy的运算速度会是我们自己写循环来计算的上百倍甚至更多。并且Numpy的API非常简单,通常只要简单...

    今天是Numpy专题的第二篇,我们来进入正题,来看看Numpy的运算。

    上一篇文章当中曾经提到过,同样大小的数据,使用Numpy的运算速度会是我们自己写循环来计算的上百倍甚至更多。并且Numpy的API非常简单,通常只要简单几行代码就可以完成非常复杂的操作。

    计算与广播

    在Python中的数组无论是什么类型,我们是无法直接对其中所有的元素进行计算的。想要做到这一点,必须要通过map这样的方式操作。而Numpy当中,我们可以很方便地对一整个数组或者是矩阵进行各式的计算

    首先,我们先定义一个Numpy的数组:

    arr = np.array([[1,2,3],[2,2,3]])
    5edb5be504b8a0a30df393e82632a330.png

    首先而我们来看一下基本的四则运算:

    31f73db4f084b08ed5a9c25e7dfd3e39.png

    这张图中我们可以看出两点,首先是Numpy当中的数组重载了四则运算符,我们可以直接通过加减乘除进行计算。第二点是Numpy自动替我们做了映射,虽然我们运算操作的对象是数组本身,但是Numpy自动替我们映射到了其中的每一个元素。

    如果你不喜欢直接运算,想要使用Numpy的api进行调用,也是一样可以的。Numpy当中也为加减乘除提供了api。

    feb6ed2fcca7634ebc9dffa027c2a9d5.png

    我们甚至还可以比较两个数组的大小,得到的结果是一个bool型的数组,代表其中每一个元素的大小关系。

    e303f14dc4d2dfa269be1e4cd0d7b422.png

    除了列举的这些之外,Numpy当中还提供了许多其他的api来进行各种计算,几乎囊括了所有常见的数学计算公式。比如log、exp、pow、开方、三角函数等等计算,基本上api的名称和math当中的一样,大家也没有必要都记住,基本上可以根据英文猜出来,一般来说记住常用的,其他的可以等到使用的时候再查阅。

    广播

    理解了Numpy中的基本操作之后,接下来要介绍一个非常重要的概念,叫做广播。如果这个概念理解不到位,那么后来在使用的过程当中,会遇到很多头疼的问题,或者是总是看不懂别人的代码。

    广播的英文叫做broadcasting,这个思想应用的范围很广,比如分布式消息中间件等很多领域都有化用。在Numpy计算当中,广播指的是将一个小的数据应用在大数据的计算上。这个概念其实很形象,我们来看个例子。

    比如我们想要对Numpy中的数组每一位的元素都加上3,我们当然可以创造出一个同样大小的数组来,然后再把它们相加。但是大可不必这么麻烦,我们直接用原数组加上3即可,Numpy内部会发现3和我们的数据大小不一致,然后自动帮我们把3拓充到和我们的数据一样大小的数组再进行计算:

    e839de6e70ab3d15c5cee4729264a839.png

    它其实等价于:

    np.full_like(arr, 3) + arr

    如果你能理解了上面这个操作,那么同样的,我们要对所有的元素平方或者是开方也都不在话下了:

    19d8fbdc840e68a76d962aed09c61935.png

    广播并不是只可以用在数组和一个整数之间,还可以用在数组和另外一个规模更小的数组当中,但是会对两者的shape有所要求。Numpy规定,两个数组的shape必须相等或者其中一个为1才可以执行广播操作。

    比如说刚才我们创建的arry数组的shape是(3, 2),我们可以让它和一个大小是(1, 2)或者是(3, 1)的“小数组”进行运算,这同样是支持的。

    ef68f9bf6a2156f43d22f0d23bf68984.png
    fa64e7af02e434c15c7debbdee1c12dd.png

    如果你看不明白上面的计算过程, 我下面用一张图做一下演示。

    18199d2508c29bdc3cb2812d8789ed1f.png

    从图中可以看到左边的数组shape是(2, 3),右边的数组shape是(2, 1),满足Numpy对于广播机制的要求。Numpy会自动对右边数组shape为1的维度进行广播,也就是将它复制若干份使得它们的shape相等。如果你把左边的数组看成是若干个听广播的人,右侧的数组看成是消息的话,那么广播机制就是把消息复制若干份,让每一个听广播的人听到同样的内容。所以这个名字还是很形象的。

    切片

    Python中数组为人称道的很重要的一点就是它的切片操作非常方便,Numpy作为依托于Python的计算包,自然也继承了这一点,所以在Numpy当中,我们也可以很方便地使用切片功能。切片的使用方法和Python基本是一样的。

    我们用上下标加上冒号来表示我们想要切片的范围, 和Python一样,这是一个左闭右开的区间。

    ed40a802388e0025ad667a42369096eb.png

    我们也可以省略其中的一个范围,只提供上界或者是下界:

    1052454e8c9fff3c4a383924b8f64b3b.png

    我们还可以上下界都省略,表示全部都要,以及倒序切片的方法也和Python是一样的。

    a9719b4a36dc05a0ac951560f6887440.png

    但是有一点不太一样,Numpy中的切片和golang中的切片比较像,它代表原数组一段区间的引用,而不是拷贝。也就是说我们修改切片中的内容是会影响原数组的,我们对一个切片赋值,明显可以发现原数组的对应位置发生了改变。

    4dd11204339109f11d82ec90b69885aa.png

    这么设计的原因和golang是一样的,因为Numpy是为了大数据计算而诞生的,大数据计算显然性能是一个非常重要的考量指标。如果这里不是设计成引用,而是拷贝的话,那么当一个大的切片产生的时候,必然会涉及到大量拷贝的操作。不仅非常消耗内存,并且也会占用大量计算资源。如果使用引用可以非常快速地返回结果。

    golang当中如此设计,也是一样的道理。

    那问题来了,如果我们想要拷贝出一份切片出来,而不是获得一个切片应该怎么办?答案也很简单,我们可以调用copy方法,获取一份拷贝。

    arr[3:10].copy()

    索引

    理解了切片的用法之后,我们接下来看看索引。索引也是Numpy当中非常重要的概念,应用也非常普遍。

    Numpy当中的索引对应数组中的维度,比如一个二维的数组,当我们用下标访问的时候,获得的其实是一个一维的数组。所以如果我们想要访问一个具体的元素的时候,能做的就是继续往下指定下标:

    2c4f6a9f103439fd53f803413264318d.png

    这个很好理解,和Python当中的多维数组的用法是一样的。上面我们用了两个方括号去锁定一个元素的位置,为了写起来方便,我们还可以用逗号分隔查询。友情提醒,Python原生的数组并不支持这样的操作,不要搞混哦。

    b58121cc6136845047d723cf865ff151.png

    同样的道理,如果是多维的数组也是一样的,我们依次写出从0到k维的坐标来获取一个固定的元素。如果我们给出的坐标信息较少,那么则会获得一个数组。

    拿3维数组举例,如果我们访问的时候只用一个下标,那么我们获得的是一个二维数组。如果使用两个下标,则获得的是一个一维数组。对于更高的维度也是同样。

    098b5cd5f4620a067c129a6ed491fec6.png

    结尾

    今天的文章我们一起了解了Numpy当中常见的计算api以及广播和索引机制,关于索引的使用今天只是开了个头,还有很多非常灵活的用法,由于篇幅的限制,我们分成了多篇文章,会在之后的文章当中一一介绍。

    今天介绍的也是Numpy的基础内容,除了广播机制稍稍需要思考一下之外,其余的应该都非常简单,我相信大家都能看明白。Numpy之所以普及,除了速度快之外,api简单易用,学习成本低也是很大的特点。

    关注我,获取更多精彩文章。

    展开全文
  • 如何使用Python和Numpy计算r平方

    千次阅读 2020-12-24 05:54:29
    具体来说,具有度’d’的numpy.polyfit拟合具有平均函数的线性回归E(y | x)= p_d * x ** d p_ {d-1} * x **(d-1)… p_1 * x p_0所以你只需要计算那个拟合的R平方。 linear regression的维基百科页面提供了详细信息。...

    numpy.polyfit文档,它是适合的线性回归。具体来说,具有度’d’的numpy.polyfit拟合具有平均函数的线性回归

    E(y | x)= p_d * x ** d p_ {d-1} * x **(d-1)… p_1 * x p_0

    所以你只需要计算那个拟合的R平方。 linear regression的维基百科页面提供了详细信息。你对R ^ 2感兴趣,你可以用几种方式计算,最简单的可能是

    SST = Sum(i=1..n) (y_i - y_bar)^2

    SSReg = Sum(i=1..n) (y_ihat - y_bar)^2

    Rsquared = SSReg/SST

    其中我使用“y_bar”表示y的平均值,“y_ihat”表示每个点的拟合值。

    我不是很熟悉numpy(我通常工作在R),所以可能有一个更整洁的方法来计算你的R平方,但以下应该是正确的

    import numpy

    # Polynomial Regression

    def polyfit(x, y, degree):

    results = {}

    coeffs = numpy.polyfit(x, y, degree)

    # Polynomial Coefficients

    results['polynomial'] = coeffs.tolist()

    # r-squared

    p = numpy.poly1d(coeffs)

    # fit values, and mean

    yhat = p(x) # or [p(z) for z in x]

    ybar = numpy.sum(y)/len(y) # or sum(y)/len(y)

    ssreg = numpy.sum((yhat-ybar)**2) # or sum([ (yihat - ybar)**2 for yihat in yhat])

    sstot = numpy.sum((y - ybar)**2) # or sum([ (yi - ybar)**2 for yi in y])

    results['determination'] = ssreg / sstot

    return results

    展开全文
  • 一、概述在Numpy中当数组进行运算时,如果两个数组的形状相同,那么两个数组相乘就是两个数组的对应位相乘,这是要求维数相乘,并且各维度的长度相同,但是当运算中两个数组的形状不同使时,numpy将会自动触发广播机制,...

    12f35ef92853ada261c0e2ee2cdf9f74.png

    一、概述

    在Numpy中当数组进行运算时,如果两个数组的形状相同,那么两个数组相乘就是两个数组的对应位相乘,这是要求维数相乘,并且各维度的长度相同,但是当运算中两个数组的形状不同使时,numpy将会自动触发广播机制,所以我们要了解numpy的广播机制,才能更好的进行数组的运算。

    二、Numpy中的广播

    1、什么是广播

    我们都知道,Numpy中的基本运算(加、减、乘、除、求余等等)都是元素级别的,但是这仅仅局限于两个数组的形状相同的情况下。

    可是大家又会发现,如果让一个数组加1的话,结果时整个数组的结果都会加1,这是什么情况呢?

    759c6a835c555a5f4a4a98255119ab03.png

    4342b8e3ca0fa670d15bdef3ce54d568.png

    1d759a2dec3ada2bcfc8276d967a3826.png

    b31a96a6658cf879089b8dfeef6d8858.png

    a9dae99b45ff5f703a0a5e543e3b4c88.png

    be80a6c4384cd5daa6350448f39796be.png

    其实这就是广播机制:Numpy 可以转换这些形状不同的数组,使它们都具有相同的大小,然后再对它们进行运算。下面是广播示意图:

    f3d5d2cca7efeaa1d61de4789017deb6.png

    术语广播是指 NumPy 在算术运算期间处理不同形状的数组的能力。对数组的算术运算通常在 相应的元素上进行。如果两个阵列具有完全相同的形状,则这些操作被无缝执行。

    如果两个数组的维数不相同,则元素到元素的操作是不可能的。然而,在 NumPy 中仍然可以对形状不相似的数组进行操作,因为它拥有广播功能。较小的数组会广播到较大数组的大小,以便使它们的形状可兼容。

    如果满足以下条件之一,那么数组被称为可广播的。

    • 数组拥有相同形状。
    • 数组拥有相同的维数,且某一个或多个维度长度为 1 。
    • 数组拥有极少的维度,可以在其前面追加长度为 1 的维度,使上述条件成立

    广播的规则:

    • 规则 1:如果两个数组的维度数不相同,那么小维度数组的形状将会在最左边补 1。
    • 规则 2:如果两个数组的形状在任何一个维度上都不匹配,那么数组的形状会沿着维度 为 1 的维度扩展以匹配另外一个数组的形状。
    • 规则 3:如果两个数组的形状在任何一个维度上都不匹配并且没有任何一个维度等于 1, 那么会引发异常。

    1.1、形状相同的广播

    2842fbc38484ba2aa60ff5a520d34802.png

    1.2、相同维度,但其中某一个或多个维度长度为 1 的广播:

    5bc0d5ee5f3a524f81e1acd5cc65db9f.png

    1.3、较少的维度,默认在其前面追加长度为 1 的维度:

    591484c744617dd0e93d1e9fb2673bda.png

    1.4、如果是标量的话,会广播整个数组上:

    1ca515f9682f6f0ac1255168bf68d9a5.png

    2、广播示例

    2.1、将数组赋值给a并查看数组的形状

    92cd0a25d7c2d3282e205d94c68ff9fd.png

    2.2、将数组赋值给b并查看数组的形状

    29ccf75a8d6972e57f99969c3738c7ef.png

    2.3、将数组a转换为4行1列

    7a60c068846fc23520e6fa48b79f40a2.png

    2.4、数组a+b,并查看形状

    7e20c1eab15df10e811cae1ab2e39c76.png

    b22edaf0d10940688bf7ce8f97ad5b32.png

    明显可以看出,相加前 a 的形状为 (4, 1), b 的形状为 (3, ), a+b 的结果的形状为(4, 3)。计算时,变换结果与上图类似,这里来详细介绍下:

    1dc9822d52e8b7836696600d301d21b6.png

    2.5、现在尝试模拟一个广播的方式, 把a中的每个元素拉长三倍

    814bdbbf3bdd9e60fc3a28081f767acd.png

    2.6、b 中的元素拉长4倍

    ecc534abe83dffcc5fee750871eb5faa.png

    2.7、aa+bb

    eb0b7f87362f99e575f18f741dea0cc7.png

    2.8、a+b

    8e6d8061475552f7b8cc07ce12299a48.png

    这里我们就能看出,我们将数组扩展到较大的维度再进行通用函数操作,和我们直接进行广播操作结果是一样的。

    三、Numpy中的运算

    1、算术运算

    Numpy中用于执行算术运算(如 add() ,subtract() ,multiply() 和 divide() )的输入数组必须具 有相同的形状或符合数组广播规则。

    常用数学运算函数:

    数学运算函数

    add(x1,x2 )

    按元素添加参数,等效于 x1 + x2

    subtract(x1,x2)

    按元素方式减去参数,等效于x1 - x2

    multiply(x1,x2)

    逐元素乘法参数,等效于x1 * x2

    divide(x1,x2)

    逐元素除以参数,等效于x1 / x2

    exp(x)

    计算e的x次方。

    exp2(x)

    计算2的x次方。

    power(x1,x2)

    计算x1的x2次幂。

    mod(x)

    返回输入数组中相应元素的除法余数.

    log(x)

    自然对数,逐元素。

    log2(x)

    x的基础2对数。

    log10(x)

    以元素为单位返回输入数组的基数10的对数。

    expm1(x)

    对数组中的所有元素计算exp(x) - 1

    log1p(x)

    返回一个加自然对数的输入数组。

    sqrt(x)

    按元素方式返回数组的正平方根。

    square(x)

    返回输入的元素平方。

    sin(x)

    三角正弦。

    cos(x)

    元素余弦。

    tan(x)

    逐元素计算切线。

    1.1、生成一个3行3列元素类型为浮点型的数组和一个1行3列的数组

    ac636f584748b326a23f612b752c98ec.png

    1.2、执行数组加法

    7f63a195d07689b393d96ad98b7f3f32.png

    1.3、执行数组减法

    a38836182021b6d9c1ebede1bc9326f7.png

    1.4、执行数组的乘法

    0867529ec8b63d667a799ddd9015ba99.png

    1.5、执行数组的除法

    f05566f020d891ded17221b92de1b5fa.png

    1.6、numpy.reciprocal()

    此函数返回参数逐元素的倒数,由于 Python 处理整数除法的方式,对于绝对值大于 1 的整数 元素,结果始终为 0,对于整数 0,则发出溢出警告。

    c8d5c803b637132ef2ccc82d04e49276.png

    1.7、进行指数运算

    5345e38105f07e0a72a433be803a4bf8.png

    1.8、执行幂运算

    2d3f087a97c8efa66d50b5acdd23fad2.png

    1.9、numpy.mod()

    此函数返回输入数组中相应元素的除法余数。函数 numpy.remainder() 也产生相同的结果。

    0064f740ab66cbb4bcd91dfd74603bb3.png

    1.10、对含有复数的数组进行执行的函数

    1aa8d7d5c06e4091e3d24e7543a8ca67.png
    • numpy.real() 返回复数类型参数的实部。
    • numpy.imag() 返回复数类型参数的虚部。

    4a14545af28301203e5b8fadf1feeb07.png
    • numpy.conj() 返回通过改变虚部的符号而获得的共轭复数。

    84645ac041f028f7ea6e3428c0f579ad.png
    • numpy.angle() 返回复数参数的角度。函数的参数是 degree 。如果为 true,返回的角度以角度制来表示,否则为以弧度制来表示。

    4b7bd8c58536555d8f077e6969666c71.png

    1.11、执行三角函数

    9cca8d737b789d9d7298d0520b6ca805.png
      1. 补充
    • numpy.around()

    这个函数返回四舍五入到所需精度的值。decimals 表示要舍入的小数位数。默认值为 0。如果 为负,整数将四舍五入到小数点左侧的位置

    f6b4f2ceaf2e0189dff3f7f3cb0fae8c.png

    同pyhon内置一样,在进行舍入的时候需要注意二进制小数的精度问题

    9068b08119a86046db70f4bf96061e41.png
    • numpy.floor() 向下取整

    此函数返回不大于输入参数的最大整数。即标量 x 的下限是最大的整数 i ,使得 i <= x。注意 在 Python 中,向下取整总是从 0 舍入。

    d4da5c6beabd6cfee42d3080bbb6cecc.png
    • numpy.ceil()向上取整

    本函数返回输入值的上限,即,标量 x 的上限是最小的整数 i ,使得 i> = x。

    004fcee4f86625e89e506360428f3d5c.png

    2、字符串函数

    以下函数用于对 dtype 为 numpy.string 或 numpy.unicode 的数组执行向量化字符串操作。 它们基于 Python 内置库中的标准字符串函数。

    2.1、numpy.char.add()

    函数执行按元素的字符串连接:

    e8d97726a9da2918e7993d7e391cc619.png

    2.2、numpy.char.multiply()

    这个函数执行多重连接:

    5f47fffa0eae25d74f97188ce887cd87.png

    2.3、numpy.char.center()

    此函数返回所需宽度的数组,以便输入字符串位于中心,并使用 fillchar 在左侧和右侧进行填充:

    985a5687b5c2ae27eea6de99ee3fabe6.png

    2.4、numpy.char.capitalize()

    函数返回字符串的副本,其中第一个字母大写:

    b872985cf1c27045f61aa642e3adb43d.png

    2.5、numpy.char.title()

    返回输入字符串的按元素标题转换版本,其中每个单词的首字母都大写:

    4e051a190186d41767dd30753705b1b9.png

    2.6、numpy.char.lower()

    函数返回一个数组,其元素转换为小写。它对每个元素调用 str.lower:

    9167ad296be26479dbe484d2da1ed6db.png

    2.7、numpy.char.upper()

    函数返回一个数组,其元素转换为大写。它对每个元素调用 str.upper:

    204a42d33a8909a83a2ca4c86dcc2178.png

    2.8、numpy.char.split()

    此函数返回输入字符串中的单词列表。默认情况下,空格用作分隔符。否则,指定的分隔符字符用于分割字符串:

    56734325bb9d25af09bc6fef221aa897.png

    2.9、numpy.char.splitlines()

    函数返回数组中元素的单词列表,以换行符分割:'n','r','rn' 都被当做换行符处理。

    a199118da2e35170759d38b5ceae34e7.png

    2.10、numpy.char.strip()

    函数返回数组的副本,其中元素移除了开头或结尾处的特定字符:

    59803d4c1eea80a4e2f75e30ec0b54f6.png

    2.11、numpy.char.join()

    这个函数返回一个字符串,其中单个字符由特定的分隔符连接:

    436d4019999136d325140d24ada20ff5.png

    2.12、numpy.char.replace()

    这个函数返回字符串副本,其中所有字符序列的出现位置都被另一个给定的字符序列取代:

    6a7fba45f5d793578aae916f1b67d068.png

    3、统计函数

    NumPy有很多有用的统计函数,用于从数组中给定的元素中查找最小,最大,百分标准差和方差等。

    常用统计函数

    numpy.amin()

    从给定数组中的元素沿指定轴返回最小值

    numpy.amax()

    从给定数组中的元素沿指定轴返回最大值

    numpy.ptp()

    返回沿轴的值的极差(最大值 - 最小值)

    numpy.percentile()

    返回特定轴的百分位数

    numpy.median()

    返回数组中值

    numpy.mean()

    返回数组的算术平均值

    numpy.average()

    返回数组的加权平均值

    numpy.std()

    返回数组的标准差

    numpy.var()

    返回数组的方差

    3.1、numpy.amin() 和 numpy.amax()

    这些函数从给定数组中的元素沿指定轴返回最小值和最大值。

    4ba623fd863e42d9faf928c228cdbd90.png

    3.3、numpy.ptp()

    本函数返回沿轴的值的极差(最大值 - 最小值)。

    f03bc2f2955d342ff1224aa625164d7d.png

    3.4、numpy.percentile()

    百分位数是统计中使用的度量,表示小于这个值得观察值占某个百分比。函数numpy.percentile() 接受以下参数。

    numpy.percentile(a, q, axis):

    • a 输入数组
    • q 要计算的百分位数,在 0 ~ 100 之间
    • axis 沿着它计算百分位数的轴

    fa436e37d5c6d738d38d62ec9554fd02.png

    3.5、numpy.median()

    中值定义为将数据样本的上半部分与下半部分分开的值。

    1b7e7d3f69a2ed161ad4328a9ccc3ebd.png

    3.6、numpy.mean()

    算术平均值是沿轴的元素的总和除以元素的数量。函数返回数组中元素的算术平均值。如果提供了轴,则沿其计算。

    e279a502ecabd911c01c7b557dbcba79.png

    3.7、numpy.average()

    加权平均值是由每个分量乘以反映其重要性的因子得到的平均值。函数根据在另一个数组中给出的各自的权重计算数组中元素的加权平均值。该函数可以接受一个轴参数。如果没有指定轴,则数组会被展开。

    考虑数组 [1,2,3,4] 和相应的权重 [4,3,2,1] ,通过将相应元素的乘积相加,并将和除以权重的和,来计算加权平均值。

    加权平均值 = (1*4+2*3+3*2+4*1)/(4+3+2+1)

    a5a43a3033e7c7583196cd0381031051.png

    不指定权重时相当于mean函数

    9b7b40250749775a81a31d59bf7a2b65.png

    80fbb9f1dfdaee3057d9274c43af3a26.png

    如果returned参数设为true,则返回权重的和

    9f0c4a4cac5bf6445dece31c94f230bd.png

    3.8、numpy.std()

    标准差是与均值的偏差的平方的平均值的平方根。标准差公式如下: std = sqrt(mean((x - x.mean())**2))

    5a9c3e7ec0be89711c9ebf2099dd7ae3.png

    方差是偏差的平方的平均值,即mean((x - x.mean())** 2)。换句话说,标准差是方差的平方根。

    650ab281602a56af4223ecb3e2b787b3.png

    4、排序、搜索和计数函数

    4.1、numpy.sort()函数返回输入数组的排序副本。

    41790aacc5dd6c0b61068b1d1e0da631.png

    a74108827c44b1e892ae9819b9f42a40.png

    4.2、numpy.argsort()

    函数对输入数组沿给定轴执行间接排序,并使用指定排序类型返回数据的索引数组。这个索引 数组用于构造排序后的数组。

    f8fe9ecb70609966a127e774f9fc6374.png

    4.3、numpy.lexsort()

    函数使用键序列执行间接排序。键可以看作是电子表格中的一列。该函数返回一个索引数组,使用它可以获得排序数据。注意,最后一个键恰好是 sort 的主键。

    c6c165730fa93902bc53a2a8fe47d499.png

    4.4、numpy.argmax() 和 numpy.argmin()

    这两个函数分别沿给定轴返回最大和最小元素的索引

    bc483641275a238e2893ad15f0dd1705.png

    4.5、numpy.nonzero()

    函数返回输入数组中非零元素的索引。

    ff83b85df4f332f21d34d8867680a505.png

    4.6、numpy.where()

    函数返回输入数组中满足给定条件的元素的索引。

    f0285d74a01362342676954131abb284.png

    4.7、numpy.extract()

    函数返回满足任何条件的元素。

    829654a4b97d10f42bf977b5bf58f58b.png

    5、转置

    Numpy 的转置可以按照你的需要对数组的轴进行转换。

    f22ffced650c1c2f737b762b58650aa9.png

    需要注意的是,转置只能发生在二维及以上的维度的数组上生效,一维的数组只有一个维度是 不可以转置的。

    8dea4379f89406f601396ddf7ac5451d.png

    6、唯一化和集合逻辑

    • np.unique() 去重函数
    • np.in1d() 验证元素是否在给定序列中
    • np.intersect1d() 求交集
    • np.union1d() 求并集
    • np.setdiff1d() 求差集

    6.1去重

    • 字符串去重

    ec1543b639b6ae1239092d5facfbcf5a.png
    • 整数去重

    471459928c4297148a6039beda436395.png
    • 布尔值去重

    800b854766fa4f39b80116fc70c8b01d.png
    • 布尔值的any()和all()函数

    c7fa2d6abd70e84824215039d1fc3ce8.png

    6.2、检验元素

    10ecb90e76362f62df142d8db0ad811e.png

    6.3、求交集

    4b8f92b5d445ec1ac52717df5544ad54.png

    6.4、求并集

    aee3c5ddba555f3ad37186c33f670bf5.png

    6.5、求差集

    460f06759e5d075dabf3b9461c31cf8a.png
    展开全文
  • Python/Numpy之加减乘除开方平方幂值三角函数等算数运算 import numpy as np a = np.array([1,2,3]) b = np.array([2,3,4]) 加法: add1 = a + b add2 = np.add(a,b) 减法: sub1 = a - b sub2 = np.subtract(a,b...
  • 文章目录前言环境常见范数向量范数矩阵范数Numpy 实现函数介绍 np.linalg.norm()用法示例正则化Reference 前言 本文总结描述了几种常见类型的范数,并利用 Numpy 中的计算函数加以实现。 环境 Windows 10 Python ...
  • python之numpy之方差numpy.var

    千次阅读 2020-04-16 13:57:26
    主要讲述了如何使用numpy计算方差和样本方差 文章目录方差样本方差 方差 方差是与平均值的平方偏差的平均值,即 var = mean(abs(x - x.mean())**2)。例子:1 >>> a = np.array([[1, 2], [3, 4]]) >>&...
  • 我们可以把矩阵看成数组的一种,也就是为维度是二维的介绍,接下来我们讲解一下numpy数组和他的叉乘、点乘操作: 一、numpy数组 使用numpy创建的数组叫做ndarray,是一个具有矢量算术运算和复杂广播能力的快速且节省...
  • numpy_square函数

    2021-12-18 07:32:06
      numpy的square用于计算各元素的平方: import numpy as np x = np.square([4, 9]) print("x =", x) 执行结果: x = [16 81]
  • numpy,matpotlib_绘制折线图/散点图 import matplotlib.pylab as pyl import numpy as npy #x=[1,2,3,4,8] #y=[5,7,2,1,5] #pyl.plot(x,y,'o')#plot(x轴数据,y轴数据,展现形式)散点图 #pyl.show()折线图 #pyl.show...
  • numpy常用API用法总结

    千次阅读 2017-12-12 10:37:13
    numpy常用API用法总结 numpy入门指南:https://docs.scipy.org/doc/numpy/user/basics.html numpy快速数据处理
  • >>> import numpy>... print numpy.power.__doc__power(x1, x2[, out])First array elements raised to powers from second array, element-wise.Raise each base in `x1` to the positionally-cor...
  • Numpy小案例

    2020-12-22 10:58:13
    要求: 列名: Vehicle_ID(车辆编号) Frame_ID(时间点) Local_X(车辆左前角x轴坐标)Local_Y(车辆左前角y轴坐标)v_length(车辆...3.在二维表内添加一列,该列为车辆平均加速度()英尺/平方秒 4.根据Lane_ID,判
  • Numpy 中某个矩阵的平方距离计算方法 目录 Numpy 中某个矩阵的平方距离计算方法 目录 具体流程 分析 参考 具体流程 1.假设:有一个n*m的矩阵,其内部为n个m维点的坐标: rand = np.random....
  • 1.numpy中axis参数说明: axis=i,即沿着数组第i个下标的变化方向进行操作。 2.关于NumPy中数组轴的理解: 学好数据分析,得学好Numpy;学好Numpy,首先彻底理解“轴”的概念!
  • numpy是如今数据分析领域离不开的Python第三方工具库,它和Python自带的math库中都有一些基础的数学函数,比如指数、对数、三角函数等。在需要使用这些函数的时候,到底该用numpy还是math,这个问题确实困扰了很多人...
  • Numpy温习函数方法

    2020-11-27 20:46:54
    一、Numpy Pandas 1.1 简介 方便数组 矩阵运算 1.2 优势 运算速度快:numpy 和 pandas 都是采用 C 语言编写, pandas 又是基于 numpy, 是 numpy 的升级版本。 消耗资源少:采用的是矩阵运算,会比 python 自带的字典...
  • 问题描述设 (; 表示纵向连接) 和 , 计算矩阵 中每一个行向量和矩阵 中每一个行向量的平方欧氏距离 (pairwise squared ...公式转化在 NumPy 中直接利用上述原式来计算两个矩阵的成对平方欧氏距离, 要显式地使用二重循...
  • python元素平方和,模长

    万次阅读 2017-09-21 18:26:14
    python元素平方
  • Numpy提供针对数字的多维数组(实际上只是一个对象)举个例子来说: import numpy as npa = np.array([1, 2, 3])print(a) #打印变量a print(type(a)) #输出变量a的数据类型 最终的输出为 [1 2 3] 就像你看到的输出一样...
  • python中开方和平方

    千次阅读 2021-03-29 10:28:33
    开方 import math math.sqrt(100) 平方 import numpy numpy.square(180) 三角函数 import math math.tan(5*math.pi/12)#tan(75),括号里是弧度
  • python -- 计算 平方,乘方,平方根

    万次阅读 多人点赞 2017-03-13 03:32:08
    2.计算平方 import numpy numpy.square(4) # 结果16pow(5,2) #结果25 3.平方根 import numpy numpy.sqrt(16) # 结果4.0 numpy.sqrt(16.) # 结果4.0pow(25, 0.5) #结果5.0 pow(25, .5) #结果5.0impo
  • NumPy计算范数2的平方

    2020-12-05 10:55:01
    老实说,没有比np.inner或np.dot更快的了。如果你觉得中间变量很烦人,你可以创建一个lambda函数:sqeuclidean = lambda x: np.inner(x, x)np.inner和np.dot利用BLAS例程,几乎肯定比标准的元素乘法加和快。...
  • """ 运算符(exp,sqrt,square) ...import numpy as np print("--------------exp,sqrt,square----------------") a = np.array([1, 4, 9]) print("指数:", np.exp(a)) print("平方根:", np.sqrt(a)) p...
  • numpy正数相乘变负数的解决办法

    千次阅读 2021-01-13 11:57:24
    numpy是一个很好用的python模块,数值运算相当方便。今天遇到了一个小问题,和大家分享一下。先扔个例子。In [1]: import numpy as npIn [2]: z = np.array([2434,17326,12736,1763])In [3]: z*1000000Out[3]: array...
  • 老实说,可能没有比np.inner或np.dot更快的速度.如果你发现中间变量很烦人,你总是可以创建一个lambda函数:sqeuclidean = lambda x: np.inner(x, x)np.inner和np.dot利用BLAS例程,几乎肯定比标准元素乘法更快,然后...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 27,640
精华内容 11,056
关键字:

numpy 平方