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.