0
点赞
收藏
分享

微信扫一扫

科学计算库Numpy

君之言之 2022-03-11 阅读 32
python

一、认识numpy数组对象


ndarray是numpy中的底层数据结构,在numpy中如果对数组执行一个四则运算,就相当于要对其每一元素做相同的操作;如果数组操作的对象和它的规模一样,则其结果就是对应位置进行计算。

 

二、创建numpy数组
1)array()函数

data=np.array([1,2,3]) #一维数组
data2=np.array([[1, 2, 3], [4, 5, 6]])   #二维数组


2)zeros()函数

np.zeros((3, 4))

array([[0., 0., 0., 0.],
            [0., 0., 0., 0.],
              [0., 0., 0., 0.]])


3)ones()函数

np.ones((3,4)

array([[1., 1., 1., 1.],
            [1., 1., 1., 1.],
             [1., 1., 1., 1.]])


4)arange()函数

np.arange(1,10)

array([1,2,3,4,5,6,,7,8,9])


5) empty()函数

np.empty((5, 2))

array([[-2.00000000e+000, -2.00390463e+000],
        [ 2.37663529e-312,  2.56761491e-312],
        [ 8.48798317e-313,  9.33678148e-313],
        [ 8.70018275e-313,  2.12199581e-314],
          [ 0.00000000e+000,  6.95335581e-309]])


三、ndarray对象的数据类型


1)如果希望获取数据类型的名称,则需要访问name属性进行获取。

data2=np.array([[1, 2, 3], [4, 5, 6]])
data2.dtype.name


2)numpy中常用的数据类型如图

 

四、数组运算


1)矢量化运算


数组在进行矢量化运算时,要求数组的形状是相等的。


2)广播机制


当形状不相等的数组执行算术运算的时候,就会出现广播机制,该机制会对数组进行扩展,使数组的shape属性值一,然后再进行矢量化运算

 



3)数组与标量运算


五、ndarray的索引和切片


1)一维数组和python列表结构差不多

2)二维数组的索引和切片


arr2d = np.array([[1, 2, 3], [4, 5, 6],[7, 8, 9]])

arr2d[1]


array([4, 5, 6])


arr2d[0, 1]


2

3) 花式索引

花式索引是NumPy的一个术语,是指用整数数组或列表进行索引,然后再将数组或列表中的每个元素作为下标进行取值。

arr = np.empty((8,4))
for i in range(8):
    arr[i]=i
arr

array([[ 0.,  0.,  0.,  0.],
       [ 1.,  1.,  1.,  1.],
       [ 2.,  2.,  2.,  2.],
       ..., 
       [ 5.,  5.,  5.,  5.],
       [ 6.,  6.,  6.,  6.],
       [ 7.,  7.,  7.,  7.]])
arr[[4,3,0,6]]

array([[ 4.,  4.,  4.,  4.],
       [ 3.,  3.,  3.,  3.],
       [ 0.,  0.,  0.,  0.],
       [ 6.,  6.,  6.,  6.]])

4)华尔型索引

布尔型索引指的是将一个布尔数组作为数组索引,返回的数据是布尔数组中True对应位置的值。
 

arr3 = np.array([1,2,3,4,5])
char= np.array(['A','B','A','C','D'])
char == 'A'
#array([True,False,True,False,False])
arr3[char == 'A']
#array([1,3])

六、Numpy通用函数

通用函数(ufunc)是一种针对ndarray中的数据执行元素级运算的函数

1、常用的一元通用函数

 

 2、常用的二元通用函数

 

 

举报

相关推荐

0 条评论