0
点赞
收藏
分享

微信扫一扫

Numpy 入门级教学

小猪肥 2022-02-17 阅读 65

numpy 入门

基础学习

>>> from numpy import *
>>> eye(4)   # 对角矩阵
array([[1., 0., 0., 0.],
       [0., 1., 0., 0.],
       [0., 0., 1., 0.],
       [0., 0., 0., 1.]])
       
>>> a = array([1,2,3])  # 一维矩阵
>>> a
array([1, 2, 3])

>>> b=array([[1,  2],  [3,  4]])  # 二维矩阵
>>> b
array([[1, 2],
       [3, 4]])

>>> c=array([1, 2, 3, 4, 5], ndmin =  2)  # 最小维度
>>> c
array([[1, 2, 3, 4, 5]])

>>> d = array([1,  2,  3], dtype = complex)  # 复数形式
>>> d
array([1.+0.j, 2.+0.j, 3.+0.j])

# int8, int16, int32, int64 四种数据类型可以使用字符串 'i1', 'i2','i4','i8' 代替
>>> dt = dtype('i4')
>>> dt
dtype('int32')

>>> dt = dtype([('age',int8)])  # 创建数据类型结构
>>> array([(10,),(20,),(30,)], dtype = dt)   # 应用于数据上
array([(10,), (20,), (30,)], dtype=[('age', 'i1')])

>>> a=arange(24)
>>> 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.ndim  # 秩,即轴的数量或维度的数量
1
>>> a.shape  # 数组的维度,对于矩阵,n 行 m 列
(24,)
>>> a.size  # 数组元素的总个数,相当于 .shape 中 n*m 的值
24
>>> a.dtype # 对象的元素类型
dtype('int32')
>>> a.real  # 元素的实部
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.imag # 元素的虚部
array([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
       0, 0])
>>> a.reshape(2,4,3)  # 重新调整大小为2*4*3
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]]])
#  ndarray.reshape 通常返回的是非拷贝副本,即改变返回后数组的元素,原数组对应元素的值也会改变。

>>> zeros((5,), dtype = int)
array([0, 0, 0, 0, 0])
>>> ones([2,2], dtype = int)
array([[1, 1],
       [1, 1]])
       
>>> asarray([1,2,3], dtype =  float)  # float类型的asarray
array([1., 2., 3.])

>>> arange(10,20,2,dtype=int)  # range类型的数组
array([10, 12, 14, 16, 18])

>>> linspace(1,10,5,endpoint=True,retstep=False,dtype=int)
# 按一定间隔生成数组
array([ 1,  3,  5,  7, 10])
>>> linspace(1,10,5,endpoint=False,retstep=True,dtype=int)
(array([1, 2, 4, 6, 8]), 1.8)

>>> a = arange(10)
>>> s=slice(2,7,2)  # 切片
>>> a[s]
array([2, 4, 6])
>>> a[2:7:2]
array([2, 4, 6])
>>> a[2:5]
array([2, 3, 4])

>>> a = array([[1,2,3],[3,4,5],[4,5,6]])
>>> a[...,[0,1]]  # 取0和1列
array([[1, 2],
       [3, 4],
       [4, 5]])
>>> a[1,...]   # 取1行
array([3, 4, 5])
>>> a[[0,1],...]  # 取0和1行
array([[1, 2, 3],
       [3, 4, 5]])

>>> x = array([[  0,  1,  2],[  3,  4,  5],[  6,  7,  8],[  9,  10,  11]])
>>> x[x>5] # 选出大于5的元素
array([ 6,  7,  8,  9, 10, 11])

>>> a = array([nan,  1,2,nan,3,4,5])
>>> a[~isnan(a)]   # 去除nan
array([1., 2., 3., 4., 5.])

>>> a=array([1,2,3,4])
>>> b=array([10,20,30,40])
>>> c=a*b
>>> c
array([ 10,  40,  90, 160])

>>> a = array([[ 0, 0, 0],
           [10,10,10],
           [20,20,20],
           [30,30,30]])
>>> b=array([1,2,3])
>>> a+b  # 当相加对象维度不一致时,自动套用格式广播
array([[ 1,  2,  3],
       [11, 12, 13],
       [21, 22, 23],
       [31, 32, 33]])
>>> bb = tile(b, (4, 1))  # 重复 b 的各个维度
>>> bb
array([[1, 2, 3],
       [1, 2, 3],
       [1, 2, 3],
       [1, 2, 3]])
      
>>> for x in nditer(a,op_flags=['readwrite']):  # 不考虑顺序的迭代
	print(x)

	
0
0
0
10
10
10
20
20
20
30
30
30

>>> for element in a.flat:
    print (element)
>>> a.flatten(order='C')
array([ 0,  0,  0, 10, 10, 10, 20, 20, 20, 30, 30, 30])
>>> a.T
array([[ 0, 10, 20, 30],
       [ 0, 10, 20, 30],
       [ 0, 10, 20, 30]])

>>> b=where(a==20)  # 找到所有等于20的地方
>>> b
(array([2, 2, 2], dtype=int64), array([0, 1, 2], dtype=int64))
>>> for i in range(len(b[0])):
	print(a[b[0][i]][b[1][i]])  # 根据位置找到20

20
20
20

>>> a = array([[1,2],[3,4]])
>>> b=array([[5,6],[7,8]])
>>> concatenate((a,b))   # 0轴连接
array([[1, 2],
       [3, 4],
       [5, 6],
       [7, 8]])
>>> concatenate((a,b),axis=1)  # 1轴连接
array([[1, 2, 5, 6],
       [3, 4, 7, 8]])

>>> a=[[1,2,3]]
>>> append(a, [[7,8,9]],axis = 0)  # 加行
array([[1, 2, 3],
       [7, 8, 9]])
>>> append(a, [[7,8,9]],axis = 1)  # 加列
array([[1, 2, 3, 7, 8, 9]])

>>> a=[[1,2,3],[3,4,5]]
>>> np.unique(a)  # 去除重复元素
array([1, 2, 3, 4, 5])

>>> a=array([0,30,45,60,90])  
>>> sin(a*pi/180)  # 求三角函数
array([0.        , 0.5       , 0.70710678, 0.8660254 , 1.        ])
>>> arcsin(sin(a*pi/180)) 
array([0.        , 0.52359878, 0.78539816, 1.04719755, 1.57079633])
>>> degrees(arcsin(sin(a*pi/180)))
array([ 0., 30., 45., 60., 90.])

>>> around(a, decimals =  1)  # 四舍五入,1表示小数十分位
array([  1. ,   5.6, 123. ,   0.6,  25.5])
>>> around(a, decimals =  -1)
array([  0.,  10., 120.,   0.,  30.])
>>> floor(a)   # 向下取整
array([  1.,   5., 123.,   0.,  25.])
>>> ceil(a)    # 向上取整
array([  1.,   6., 123.,   1.,  26.])

# 加减乘除
>>> a=array([1,2,3])
>>> b=array([4,5,6])
>>> add(a,b)
array([5, 7, 9])
>>> a+b
array([5, 7, 9])
>>> subtract(a,b)
array([-3, -3, -3])
>>> a-b
array([-3, -3, -3])
>>> multiply(a,b)
array([ 4, 10, 18])
>>> a*b
array([ 4, 10, 18])
>>> divide(a,b)
array([0.25, 0.4 , 0.5 ])
>>> a/b
array([0.25, 0.4 , 0.5 ])

>>> a=array([0.25,1.33,1,100])
>>> a.dtype
dtype('float64')
>>> reciprocal(a)   # 取倒数
array([4.       , 0.7518797, 1.       , 0.01     ])

>>> power(a,2)  # a**2
array([6.2500e-02, 1.7689e+00, 1.0000e+00, 1.0000e+04])
>>> mod(a,2)    # a%2
array([0.25, 1.33, 1.  , 0.  ])

>>> a=array([[3,7,5],[8,4,3],[2,4,9]])
>>> amin(a,1)  # 每行最小
array([3, 3, 2])
>>> amin(a,0)  # 每列最小
array([2, 4, 3])
>>> amax(a,1)  # 每行最大
array([7, 8, 9])
>>> amax(a,0)  # 每列最大
array([8, 7, 9])
>>> ptp(a,0)  # 最大减最小
array([6, 3, 6])

>>> percentile(a, 50) # 50% 的分位数,就是 a 里排序之后的中位数
4.0
>>> median(a)  # a 中元素的中位数(中值)
4.0
>>> mean(a)  # 所有的均值
5.0
>>> mean(a,0)  # 每行均值
array([4.33333333, 5.        , 5.66666667])
>>> average([1,2,3,  4],weights =  [4,3,2,1], returned =  True)
# 计算加权平均数,返回加权平均数和权重和
(2.0, 10.0)
>>> std(a)  # 求标准差
2.309401076758503
>>> std(a,0)  # 每行的标准差
array([2.62466929, 1.41421356, 2.49443826])
>>> var(a)    # 方差
5.333333333333333

>>> a
array([[3, 7, 5],
       [8, 4, 3],
       [2, 4, 9]])
>>> nonzero (a)  # 给出非零元素的索引
(array([0, 0, 0, 1, 1, 1, 2, 2, 2], dtype=int64), array([0, 1, 2, 0, 1, 2, 0, 1, 2], dtype=int64))

>>> condition = mod(a,2)  ==  0
>>> extract(condition, a)  # 根据条件索引
array([8, 4, 2, 4])

>>> ccc=a.copy()  # 深度复制
>>> ccc
array([[3, 7, 5],
       [8, 4, 3],
       [2, 4, 9]])

# 保存矩阵到文件中
np.savetxt("out.txt",a,fmt="%d",delimiter=",") # 改为保存为整数,以逗号分隔
b = np.loadtxt("out.txt",delimiter=",") # load 时也要指定为逗号分隔


举报

相关推荐

webpack 入门级操作

12-入门级js

vue的入门级安装

GRE数学入门级词汇

springcloud入门级搭建(一)

0 条评论