Python中的NumPy操作笔记

Python中的内置数据类型list的特点:

list中的数据类型不一定相同。

创建:

list1 = ['Google', 'Runoob', 1997, 2000];
list2 = [1, 2, 3, 4, 5 ];
list3 = ["a", "b", "c", "d"];
list4 = [i for i in range(10)]

 

NumPy库的操作:

加载NumPy库:

import numpy as np

查看NumPy库版本:

np.__version__

创建:

arr1 = np.array([1, 2, 3])
#array([ 1,  2,  3])



arr2_1 = np.array([i for i in range(10)])
#array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])

arr2_2 = np.arange(10)                    #arange
#array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])

arr2_3 = np.arange(0,10)
#array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])

arr2_4 = np.arange(0,20,2)
#array([ 0,  2,  4,  6,  8, 10, 12, 14, 16, 18])

arr2_5 = np.arange(1, 16).reshape((3,5))
#array([[ 1,  2,  3,  4,  5],
#       [ 6,  7,  8,  9, 10],
#       [11, 12, 13, 14, 15]])



arr3_1 = np.zeros(10)
#array([ 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.])

arr3_2 = np.zeros(10, dtype=int)
#array([0, 0, 0, 0, 0, 0, 0, 0, 0, 0])

arr3_3 = np.zeros(shape=(3,5),dtype=int)
#array([[0, 0, 0, 0, 0],
#       [0, 0, 0, 0, 0],
#       [0, 0, 0, 0, 0]])



arr4 = np.ones(10)
#array([ 1.,  1.,  1.,  1.,  1.,  1.,  1.,  1.,  1.,  1.])

arr5 = np.full((3,5),666)
#array([[666, 666, 666, 666, 666],
#       [666, 666, 666, 666, 666],
#       [666, 666, 666, 666, 666]])



arr6_1 = np.linspace(0,20,10)         #起始点,终止点,等偿生成10个点(区域前闭后闭)
#array([  0.        ,   2.22222222,   4.44444444,   6.66666667,
#         8.88888889,  11.11111111,  13.33333333,  15.55555556,
#        17.77777778,  20.        ])

arr6_2 = np.linspace(0, 20, 11)
#array([  0.,   2.,   4.,   6.,   8.,  10.,  12.,  14.,  16.,  18.,  20.])



np.random.randint(0, 10) #0到10的随机数(区域前闭后开)
#5

np.random.random() #0到1的随机数
#0.2811684913927954

np.random.random(10)
#array([ 0.46284169,  0.23340091,  0.76706421,  0.81995656,  0.39747625,
#        0.31644109,  0.15551206,  0.73460987,  0.73159555,  0.8578588 ])

np.random.normal() #均值为0,方差为1的正态分布数
#0.7760516793129695

np.random.normal(10, 100)  #均值为10,方差为100
#128.06359754812632

np.random.normal(0, 1, (3,5))
#array([[ 0.06102404,  1.07856138, -0.79783572,  1.1701326 ,  0.1121217 ],
#       [ 0.03185388, -0.19206285,  0.78611284, -1.69046314, -0.98873907],
#       [ 0.31398563,  0.39638567,  0.57656584, -0.07019407,  0.91250436]])

arr7_1 = np.random.randint(0, 10,10) #第三个参数:生成数组(向量)数量(区域前闭后开)
#array([5, 8, 3, 1, 7, 3, 7, 1, 1, 6])

arr7_2 = np.random.randint(4, 8,size=(3,5))
#array([[4, 7, 6, 5, 7],
#       [4, 5, 7, 5, 7],
#       [4, 4, 7, 4, 7]])


普通运算:

arr = np.arange(10)
#array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])



#加法
arr1 = arr + 1
#array([ 1,  2,  3,  4,  5,  6,  7,  8,  9, 10])

#减法
arr2 = arr - 1
#array([-1,  0,  1,  2,  3,  4,  5,  6,  7,  8])

#乘法
arr3_1 = np.array([2*i for i in arr]) #使用numpy.array生成矩阵大大快于python内置list
#array([ 0,  2,  4,  6,  8, 10, 12, 14, 16, 18])

arr3_2 = 2 * arr    #速度最快!
#array([ 0,  2,  4,  6,  8, 10, 12, 14, 16, 18])

arr3_3 = arr ** 2    #求平方
#array([ 0,  1,  4,  9, 16, 25, 36, 49, 64, 81], dtype=int32)

#除法
arr4_1 = arr / 2
#array([0. , 0.5, 1. , 1.5, 2. , 2.5, 3. , 3.5, 4. , 4.5])

arr4_2 = arr // 2    #整除
#array([0, 0, 1, 1, 2, 2, 3, 3, 4, 4], dtype=int32)

arr4_3 = arr % 2    #模运算
#array([0, 1, 0, 1, 0, 1, 0, 1, 0, 1], dtype=int32)

arr4_4 = 1 / arr    #取倒数

#求绝对值
arr5 = np.abs(arr)
#array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])

#求正弦余弦……
np.sin(X) #正弦
np.cos(X)
np.tan(X)

np.exp(X)              #取e的x次方
np.power(3, X)         #3的X次方
3**X                   #3的X次方

np.log(X)              #以e为底求对数
np.log10(X)            #以10为底求对数

矩阵创建与运算:

A = np.arange(4).reshape(2,2)
#array([[0, 1],
#       [2, 3]])

B = np.full((2,2),10)
#array([[10, 10],
#       [10, 10]])

A + B    #加法
#array([[10, 11],
#       [12, 13]])

A - B    #减法
A * B    #乘法
A / B    #除法

A.dot(B) #矩阵乘法
#array([[10, 10],
#       [50, 50]])

A.T      #矩阵转置
#array([[0, 2],
#       [1, 3]])

访问:

x = np.arange(10)
#array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])

X = np.arange(15).reshape(3,5)
#array([[ 0,  1,  2,  3,  4],
#       [ 5,  6,  7,  8,  9],
#       [10, 11, 12, 13, 14]])

x[5]
#5

x[-1] #倒数一个
#9

X[0][0] #不建议使用
#0

X[2,2] #多维访问建议使用
#12

x[0:5] #切片
#array([0, 1, 2, 3, 4])

x[:5] #从头开始
#array([0, 1, 2, 3, 4])

x[5:] #访问到结尾
#array([5, 6, 7, 8, 9])

x[::2] #从头到尾+补偿
#array([0, 2, 4, 6, 8])

x[::-1] #倒数访问
#array([9, 8, 7, 6, 5, 4, 3, 2, 1, 0])

X[:2, :3]
#array([[0, 1, 2],
#       [5, 6, 7]])

X[:2, ::2]
#array([[0, 2, 4],
#       [5, 7, 9]])

X[::-1, ::-1]
#array([[14, 13, 12, 11, 10],
#       [ 9,  8,  7,  6,  5],
#       [ 4,  3,  2,  1,  0]])

X[0]
#array([0, 1, 2, 3, 4])

X[0, :]
#array([0, 1, 2, 3, 4])

subX = X[:2, :3].copy() #使用copy()则不会影响元矩阵
#array([[0, 1, 2],
#       [5, 6, 7]])

修改:

arr[5] = 100
#array([  0,   1,   2,   3,   4, 100,   6,   7,   8,   9])

属性:

arr = np.arange(10)
#array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])

arr.dtype
#dtype('int32')

arr.ndim
#1

arr.shape
#(10,)

arr.size
#10

To Be Continued.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值