Numpy精炼操作大全

Numpy

简介

​ numpy是进行科学计算的python标准库,尤其在数据分析时,可以说它是大量python数学和科学计算包的基础。

安装

conda install numpy     //Anaconda环境

ndarray属性

ndarray表示N维数组对象,数组的维数和每一维数组元素的个数由shape决定,数组的维数称为轴(axes),轴的数量称为秩(rank)。

numpy.array(object, dtype = None, copy = True, order = None, subok = False, ndmin = 0)

shape :表示数组每个轴元素数量的元组

a = np.array([1,2,3,4])
c = np.array([[1,2,3,4],
              [5,6,7,8],
              [9,10,11,12]])
a.shape
(4,)
c.shape
(3,4) 

rank:轴的个数/维度数量

c.ndim
2

reshape:改变shape,并不会返回,但注意他们共享内存空间,因此修改任何一个也对另一个产生影响,因此注意新数组的元素个数必须与原数组一样。

c.shape=2,3,2  //c.reshape(2,3,2)  //  c.reshape((2,3,2))
array([[[ 1,  2],
        [ 3,  4],
        [ 5,  6]],

       [[ 7,  8],
        [ 9, 10],
        [11, 12]]])
c.reshape(-1,12)
array([[ 1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12]])

dtype:数组元素数据类型的对象

c.dtype
dtype('int32')
c.dtype

size:元素总个数

c.size
12

itemsize:每个元素长度所占字节数

c.itemsize
4

data:包含数组实际元素的缓冲区

a.data
<memory at 0x000002293742CB88>

创建数组

numpy.empty(shape, dtype = float, order = 'C')
#order 有"C"和"F"  分别代表行优先和列优先

普通python序列转换

ndarr = np.array([1,2,3])  #直接创建
list = [1,2,3,4]     #list 创建
tuplt = (1,2,3,4)   #tuple 创建
ndarr1 = np.array(list)
ndarr2 = np.array(tuple)

zeros

np.zeros((3,4))
array([[0., 0., 0., 0.],
       [0., 0., 0., 0.],
       [0., 0., 0., 0.]])

ones

np.ones((4,6))
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.]])

empty

np.empty((2,3))
array([[4.24399158e-314, 8.48798317e-314, 1.27319747e-313],
       [1.69759663e-313, 2.12199579e-313, 2.54639495e-313]])

arange

np.arange(0,12,3)
array([0, 3, 6, 9])

linspace

np.linspace(start, stop, num=50, endpoint=True, retstep=False, dtype=None)
np.linspace(0,1,10)
array([0.        , 0.11111111, 0.22222222, 0.33333333, 0.44444444,
       0.55555556, 0.66666667, 0.77777778, 0.88888889, 1.        ])

logspace

np.logspace(start, stop, num=50, endpoint=True, base=10.0, dtype=None)
np.logspace(0,3,4,base=2)
array([1., 2., 4., 8.])

在0~1均匀分布的随机数组成的数组

np.random.random((2,3))
array([[0.00751748, 0.81284807, 0.86476196],
       [0.51759227, 0.78719195, 0.26068424]])

在整数均匀分布的随机数组成的数组

np.random.randint(0, 5, (3, 2))
array([[2, 0],
       [1, 1],
       [0, 0]])

单位矩阵

np.eye(3)
array([[1., 0., 0.],
       [0., 1., 0.],
       [0., 0., 1.]])

随机小数数组

np.random.randn(3,2,3)
array([[[-0.4760226 , -0.54090915,  1.1947473 ],
        [-1.51931029, -0.61272605,  0.94740362]],

       [[-0.2962579 ,  0.26290447,  0.38847889],
        [ 0.22281148,  0.0900214 ,  0.69396055]],

       [[ 0.80654318, -1.32299948, -0.39186606],
        [-0.24411807,  0.93703774,  1.14458252]]])
根据已有数组创建
x = c     #将c的地址传给x  x,c改变元素会相互影响
x = c.copy() 
arr = np.arange(12)
a=arr[3:]
b=arr[3:-1]
a[1]=123
b[2]=234
print(arr)
print(id(a),id(b),id(arr[3:]))
[  0   1   2   3 123 234   6   7   8   9  10  11]
4545878416 4545878496 4545878576 #虽然地址不一样 但是修改值得话会相互影响 split()一样

形状变化

拼接
a = np.array([1,2,3,4])
b = np.array([5,6,7,8])
np.concatenate([a,b],axis=0)  #axis代表轴数
array([1, 2, 3, 4, 5, 6, 7, 8])
np.vstack((a,b))
array([[1, 2, 3, 4],
       [5, 6, 7, 8]])
np.hstack((a,b))
array([1, 2, 3, 4, 5, 6, 7, 8])
np.dstack((a,b)) 	
array([[[1, 5],
        [2, 6],
        [3, 7],
        [4, 8]]])
分裂、切片
np.split(arr,[])  #按axis切分  注意一定要是[]
np.hsplit(arr,[])
np.vsplit(arr,[])
np.dsplit(arr,[])
一维数组
x=np.array([[9, 5, 9],
       [9, 9, 8],
       [6, 4, 2]])
x.ravel()
array([9, 5, 9, 9, 9, 8, 6, 4, 2])
排序
x = np.array([3,  1,  2]) 
np.sort(x,axis=0)
array([1, 2, 3])
np.argsort(x,axis=0)
array([1, 2, 0], dtype=int64)
转置
A.T
A.transpose()

广播

在这里插入图片描述

索引

布尔索引

在这里插入图片描述

特殊函数

np.where()
arr = np.array([[1,2,np.NaN,4],
                [3,np.NaN,5,6]])
arr
array([[ 1.,  2., nan,  4.],
       [ 3., nan,  5.,  6.]])
np.isnan(arr)
np.where(np.isnan(arr),0,arr)
array([[1., 2., 0., 4.],
       [3., 0., 5., 6.]])
np.unique()
strarr = np.array(['图书','数码','没事','小吃','女装','没事','小吃','没事','女子','女装'])
np.unique(strarr)
array(['图书', '女子', '女装', '小吃', '数码', '没事'], dtype='<U2')

运算

元素运算

在这里插入图片描述
在这里插入图片描述

绝对值

x = np.array([-2, -1, 0, 1, 2])
np.absolute(x)
np.abs(x)
abs(x)
array([2, 1, 0, 1, 2])

聚合函数

np.sum(0)  #求和  0代表第一个轴
np.min(0)  #最小
np.max(0)    #最大
np.cumsum()
np.cumprod() 
np.mean(0)  #  

在这里插入图片描述

矩阵运算
dot()数组积运算
vdot()向量点积
inner()返回一维数组内积
matmul()数组矩阵积
np.dot(A,B) = np.matmul(A,B)  #A B为矩阵
np.dot(a,b)=np.vdot(a,b)=np.inner(a,b) # a b都为为一维
布尔运算
a = np.arange(6)
a<3
array([ True,  True,  True, False, False, False])
a[a<3]
array([0, 1, 2])
np.count_nonzero(a<3)
3
np.sum(a<3)
3
np.all(a>5)
False
np.any(a>4)
True

在这里插入图片描述

运算符对应函数
&np.bitwise_and
|np.bitwise_or
^np.bitwise_xor
~np.bitwise_not
np.sum((inches>0.5)&(inches<1))

IO文件

存放
import numpy as np
data = np.random.randint(0,8,(3,4)) 
np.save('data',data)
np.load('data.npy')
np.savez('data',data)
np.load('data.npz')
np.savetxt('data.csv',data,fmt="%d",delimiter=",")
np.savetxt("out.txt",data,fmt="%d",delimiter=",") # 改为保存为整数,以逗号分隔
读取
import numpy as np
data = np.loadtxt('filename',delimiter=',')  
data = np.genfromtxt('filename',delimiter=',',encoding='gbk')  //字符变量为nan
  • 5
    点赞
  • 75
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值