NumPy入门知识点

先看一个numpy的例子

import numpy as np
def npsum():
    a = np.array([0,1,2,3,4])
    b = np.array([9,8,7,6,5])
    
    c= a**2+b**3
    return c
print(npsum())
[729 513 347 225 141]

由于是在jupyter notebook中写好的笔记然后再上传到本博客上,所以代码都是按照输入与输出的顺序来的,都是可以运行出来的,如果又不懂的地方,欢迎提问

N维数组对象nadarray

nadarray 是一个多维数组对象,由实际的数据和描述这些数据的元数据(数据维度,数据类型)组成,一般要求所有的数据元素的类型是相同的,数组下标从0开始

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

np.array()输出成[]的形式,元素由空格分割,
轴(axis)是保存数据的维度,秩(rank)是轴的数量

nadarray 对象的属性

.ndim 秩,
.shape ndarray对象的尺度,对于矩阵而言,n行m列
.size ndarray对象元素的个数
.dtype dnarray对象中的元素的个数
.itemsize dnarrray中对象的每个元素的大小,以字节为单位

a.ndim,a.shape,a.size,a.dtype,a.itemsize#输出
(2, (2, 5), 10, dtype('int32'), 4)

ndarray 数组的创建方法

  1. 可以从列表,元组,或者列表和元组混合类型创建
x = np.array([0,1,2,3])#使用列表创建
x
array([0, 1, 2, 3])
x = np.array((1,2,3))#用元组创建
x
array([1, 2, 3])
x = np.array([ [1,2],[6,5],(0.4,5)])
x
array([[1. , 2. ],
       [6. , 5. ],
       [0.4, 5. ]])

2.使用NumPy中的函数创建ndarray数组,如:arange,ones,zeros,等

  • np.arange(n) 类似range()函数,返回ndarray类型
    np.ones(shape) 根据shape生成一个全是1的数组,shape是元组类型
    np.zeros(shape) 生成全是0的数组,
    np.full(shape,val) 根据shape生成一个数组,每个元素值是val
    np.eye(n) 创建一个正方的n*n的单位矩阵,对角线为1,其余为0
    np.ones_like(a) 根据数组a的形状生成一个全1数组
    np.zeros_like(a) 根据数组a的形状生成一个全0数组
    np.full_like(a,val) 根据数组a的形状生成一个数组,元素的值都是val
    np.linspace() 根据起止数据等间距的填充数据,形成数组
    np.concatenate() 将两个或多个数组合并成一个新的数组
np.arange(10)
array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
np.ones((2,3))#生成的元素为浮点类型
array([[1., 1., 1.],
       [1., 1., 1.]])
np.ones((2,3),dtype = np.int32)
array([[1, 1, 1],
       [1, 1, 1]])
a = np.linspace(1,10,4)
b = np.linspace (1,10,4,endpoint=False)#参数endpoint表示是否包括最后一个元素
a,b
(array([ 1.,  4.,  7., 10.]), array([1.  , 3.25, 5.5 , 7.75]))
c = np.concatenate((a,b))
c
array([ 1.  ,  4.  ,  7.  , 10.  ,  1.  ,  3.25,  5.5 ,  7.75])

ndarray 数组的维度变换

.reshape() 不改变数组的元素,返回一个shape形状的数组,原数组不变
.resize() 与.shape()功能一致,但是修改原数组
.swapaxes(ax1,ax2) 将数组n个维度中的两个维度进行调换
.flatten() 将数组进行降维,返回折叠后的一维数组,原数组不变

a = np.ones((2,3,4),dtype = np.int32)
a.reshape((3,8))
array([[1, 1, 1, 1, 1, 1, 1, 1],
       [1, 1, 1, 1, 1, 1, 1, 1],
       [1, 1, 1, 1, 1, 1, 1, 1]])
a
array([[[1, 1, 1, 1],
        [1, 1, 1, 1],
        [1, 1, 1, 1]],

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

ndarray 数组的类型变换

.satype(new_type)

a = np.ones((2,3,4),dtype=np.int)
a
array([[[1, 1, 1, 1],
        [1, 1, 1, 1],
        [1, 1, 1, 1]],

       [[1, 1, 1, 1],
        [1, 1, 1, 1],
        [1, 1, 1, 1]]])
b = a.astype(np.float)
b
array([[[1., 1., 1., 1.],
        [1., 1., 1., 1.],
        [1., 1., 1., 1.]],

       [[1., 1., 1., 1.],
        [1., 1., 1., 1.],
        [1., 1., 1., 1.]]])

ndarray 数组变换成列表

.tolist()

b.tolist()
[[[1.0, 1.0, 1.0, 1.0], [1.0, 1.0, 1.0, 1.0], [1.0, 1.0, 1.0, 1.0]],
 [[1.0, 1.0, 1.0, 1.0], [1.0, 1.0, 1.0, 1.0], [1.0, 1.0, 1.0, 1.0]]]

ndarray 数组的操作

  1. 数组的索引和切片,与python类似
a = np.array([9,8,7,6,5])#一维数组的索引和切片
a[2]
7
a[1:4:2]
array([8, 6])
a = np.arange(24).reshape(2,3,4)
a
array([[[ 0,  1,  2,  3],
        [ 4,  5,  6,  7],
        [ 8,  9, 10, 11]],

       [[12, 13, 14, 15],
        [16, 17, 18, 19],
        [20, 21, 22, 23]]])
a[1,2,3]
23
a[:,1,-3]
array([ 5, 17])
a[:,0:2,0:2]
array([[[ 0,  1],
        [ 4,  5]],

       [[12, 13],
        [16, 17]]])
b = np.arange(24).reshape(3,8)
b
array([[ 0,  1,  2,  3,  4,  5,  6,  7],
       [ 8,  9, 10, 11, 12, 13, 14, 15],
       [16, 17, 18, 19, 20, 21, 22, 23]])
b[:,0:2]
array([[ 0,  1],
       [ 8,  9],
       [16, 17]])
b[0:2]
array([[ 0,  1,  2,  3,  4,  5,  6,  7],
       [ 8,  9, 10, 11, 12, 13, 14, 15]])

ndarray 数组的运算

  • 数组与标量的运算作用与数组的每一个元素
  • np.abs(x)/np.fabds(x) 计算数组个元素的绝对值
  • np.sqrts(x) 计算数组的个元素平方根
  • np.square(x) 计算数组的各元素的平方
  • np.log(x),np.log10(x),np.log2(s) 计算数组的自然数,10为底,2为底的对数
  • np.ceil(x),np.floor(x) 计算数组各元素的ceiling值或floor值
  • np.rint(x) 计算数组各元素的四舍五入值
  • np.nodf(x) 数组各元素的小数和整数部分以两个独立数组返回
  • np.exp(x) 计算各元素的指数值
a = np.arange(24).reshape((2,3,4))
a
array([[[ 0,  1,  2,  3],
        [ 4,  5,  6,  7],
        [ 8,  9, 10, 11]],

       [[12, 13, 14, 15],
        [16, 17, 18, 19],
        [20, 21, 22, 23]]])
a.mean()#a中所有值得平均值
11.5
a = a/a.mean()
a
array([[[0.        , 0.08695652, 0.17391304, 0.26086957],
        [0.34782609, 0.43478261, 0.52173913, 0.60869565],
        [0.69565217, 0.7826087 , 0.86956522, 0.95652174]],

       [[1.04347826, 1.13043478, 1.2173913 , 1.30434783],
        [1.39130435, 1.47826087, 1.56521739, 1.65217391],
        [1.73913043, 1.82608696, 1.91304348, 2.        ]]])
b = np.arange(24).reshape((2,3,4))#使用函后数后是又产生了一个数组,原数组不变
np.square(b)
array([[[  0,   1,   4,   9],
        [ 16,  25,  36,  49],
        [ 64,  81, 100, 121]],

       [[144, 169, 196, 225],
        [256, 289, 324, 361],
        [400, 441, 484, 529]]], dtype=int32)
a = np.sqrt(a)
a
array([[[0.        , 0.29488391, 0.41702883, 0.51075392],
        [0.58976782, 0.65938047, 0.72231512, 0.7801895 ],
        [0.83405766, 0.88465174, 0.93250481, 0.97801929]],

       [[1.02150784, 1.06321907, 1.10335457, 1.14208048],
        [1.17953565, 1.21583752, 1.25108648, 1.28536917],
        [1.31876095, 1.35132785, 1.38312815, 1.41421356]]])
np.modf(a)
(array([[[0.        , 0.29488391, 0.41702883, 0.51075392],
         [0.58976782, 0.65938047, 0.72231512, 0.7801895 ],
         [0.83405766, 0.88465174, 0.93250481, 0.97801929]],
 
        [[0.02150784, 0.06321907, 0.10335457, 0.14208048],
         [0.17953565, 0.21583752, 0.25108648, 0.28536917],
         [0.31876095, 0.35132785, 0.38312815, 0.41421356]]]),
 array([[[0., 0., 0., 0.],
         [0., 0., 0., 0.],
         [0., 0., 0., 0.]],
 
        [[1., 1., 1., 1.],
         [1., 1., 1., 1.],
         [1., 1., 1., 1.]]]))
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值