numpy 高级

来源:互联网 发布:监控与数据采集 编辑:程序博客网 时间:2024/05/23 05:09

1. 广播法则(rule)¶

广播法则能使通用函数有意义地处理不具有相同形状的输入。

  • 广播第一法则:如果所有的输入数组维度不都相同,一个“1”将被重复地添加在维度较小的数组上直至所有的数组拥有一样的维度。

  • 广播第二法则:确定长度为1的数组沿着特殊的方向表现地好像它有沿着那个方向最大形状的大小。对数组来说,沿着那个维度的数组元素的值理应相同。

应用广播法则之后,所有数组的大小必须匹配。更多细节可以从这个[文档找到]。

2. 花哨的索引和索引技巧

import numpy as np 
a=arange(12)**2
a=array([  0,   1,   4,   9,  16,  25,  36,  49,  64,  81, 100, 121])
i=array([1,1,3,8,5])
a[i]=array([ 1,  1,  9, 64, 25])
j = np.array( [ [ 3, 4], [ 9, 7 ] ] )     
a[j]   =array([[ 9, 16],
       [81, 49]])
通过布尔数组索引
当我们使用整数数组索引数组时,我们提供一个索引列表去选择。通过布尔数组索引的方法是不同的我们显式地选择数组中我们想要和不想要的元素。
我们能想到的使用布尔数组的索引最自然方式就是使用和原数组一样形状的布尔数组。
a = arange(12).reshape(3,4)
b = a > 4
b    
array([[False, False, False, False],
       [False,  True,  True,  True],
       [ True,  True,  True,  True]], dtype=bool)

ix_()函数

ix_函数可以为了获得多元组的结果而用来结合不同向量。例如,如果你想要用所有向量abc元素组成的三元组来计算a+b*c

a = array([2,3,4,5])
b = array([8,5,4])
c = array([5,4,6,8,3])
ax,bx,cx= ix_(a,b,c)

ax                        %同理bx,cx

array([[[2]],

       [[3]],

       [[4]],

线性代数¶

简单数组运算



       [[5]]])

result = ax+bx*cx
result

array([[[42, 34, 50, 66, 26],
        [27, 22, 32, 42, 17],
        [22, 18, 26, 34, 14]],

       [[43, 35, 51, 67, 27],
        [28, 23, 33, 43, 18],
        [23, 19, 27, 35, 15]],

       [[44, 36, 52, 68, 28],
        [29, 24, 34, 44, 19],
        [24, 20, 28, 36, 16]],

       [[45, 37, 53, 69, 29],
        [30, 25, 35, 45, 20],
        [25, 21, 29, 37, 17]]])

result[3,2,4]=17


a.transpose()   列转换成行

线性代数

简单数组运算

import numpy as np
import numpy.linalg import nplg


原创粉丝点击