python模块之numpy

Numpy是一个第三方库,是数组相关的运算

通过pip安装;pip install numpy

Anaconda python的一个科学计算发行版本,安装后将不必单独安装numpy,下面的库模块也将不必安装Scipu,numpy,pandas,matplotlib,scikit-learn

实例演示

import numpy as np

#用列表创建数组
arr = np.array([1,2,3,4])#用普通列表创建数组
arr_2d = np.array([[1,2],[3,4]]) #嵌套列表创建多维数组

arr.ndim  #1,数组维度
arr_2d.ndim #2  ,数组维度

arr.shape  #(4,) 数组形状
arr_2d.shape  #(2,2) 数组形状

arr.dtype  #dtype('int32'),数组类元素类型

#数组函数生成数组
arr2 = np.arange(10)  #[0,10)区间函数
print(arr2)
arr3 = np.linspace(0,4,10)  # 0到4之间等分10份
print(arr3)
arr4 = np.random.randn(6,4)  #正态分布的随机数
print(arr4)
arr5 = np.random.randint(1,5,(3,4))#1-5随机选整数,形成3*4的数组
print(arr5)

结果:

[0 1 2 3 4 5 6 7 8 9]
[0.         0.44444444 0.88888889 1.33333333 1.77777778 2.22222222
 2.66666667 3.11111111 3.55555556 4.        ]
[[ 0.66212053 -0.09177667  0.1540246  -0.60972427]
 [-0.29582584 -1.78060509  0.85346138  0.98237782]
 [ 0.81189452  1.05013452 -1.30248473  1.68647191]
 [-0.51096937  0.55555892  1.04796969 -0.68796894]
 [ 1.90261247  0.66688596 -0.83434671 -1.96265811]
 [-0.55722723 -0.49191761  0.53691393  0.32902115]]
[[2 2 4 4]
 [4 3 1 3]
 [2 2 4 2]]
#特殊方法数组
zero = np.zeros((3,5))  #数组元素为0的3*5数组
print(zero.dtype,zero)

one = np.ones((3,5),dtype="int32")  #数组元素为1的3*5数组,dtype指定数组内元素的数据类型
print(one.dtype,one)

eye_arr = np.eye(6)  #对角线为1的数组
print(eye_arr)

结果:

float64 [[0. 0. 0. 0. 0.]
 [0. 0. 0. 0. 0.]
 [0. 0. 0. 0. 0.]]
int32 [[1 1 1 1 1]
 [1 1 1 1 1]
 [1 1 1 1 1]]
[[1. 0. 0. 0. 0. 0.]
 [0. 1. 0. 0. 0. 0.]
 [0. 0. 1. 0. 0. 0.]
 [0. 0. 0. 1. 0. 0.]
 [0. 0. 0. 0. 1. 0.]
 [0. 0. 0. 0. 0. 1.]]
#数组的 索引和切片
arr5 = np.array([[4, 2, 2, 2],[3, 2, 2, 4],[3, 2, 1, 4]])
arr5[0]  #array([4, 2, 2, 2])
arr5[0,0]  #4
arr5[-1]  # array([3, 2, 1, 4])
arr5[-1,-1] #4
arr5[:2,1]  #array([2,2])切片,逗号前表示行切片,逗号后表示列切片

#改变数组形状
arr6 = arr5.reshape(4,3)#生成新的数组,要求元素必须相等
print(arr6)
arr7 = arr5.reshape(2,6)
print(arr7)
arr8 = arr7.ravel() #变成1维数组
print(arr8)

#矩阵转置
arr11 = arr7.transpose()  #行列互换
print(arr11)

#矩阵广播:至少有个维度是相同的(标量是个特殊情况)
one = one*10
print(one)

结果:

[[4 2 2]
 [2 3 2]
 [2 4 3]
 [2 1 4]]
[[4 2 2 2 3 2]
 [2 4 3 2 1 4]]
[4 2 2 2 3 2 2 4 3 2 1 4]
[[4 2]
 [2 4]
 [2 3]
 [2 2]
 [3 1]
 [2 4]]
[[10. 10. 10. 10. 10.]
 [10. 10. 10. 10. 10.]
 [10. 10. 10. 10. 10.]]

#常用运算
arr9 = np.ones((2,6))
print(arr9)
arr79 = arr7+arr9
print(arr79)
arr7_9 = arr7-arr9
print(arr7_9)
arr10 = arr7*arr9
print(arr10)
#np.dot() #点乘

结果:

[[1. 1. 1. 1. 1. 1.]
 [1. 1. 1. 1. 1. 1.]]
[[5. 3. 3. 3. 4. 3.]
 [3. 5. 4. 3. 2. 5.]]
[[3. 1. 1. 1. 2. 1.]
 [1. 3. 2. 1. 0. 3.]]
[[4. 2. 2. 2. 3. 2.]
 [2. 4. 3. 2. 1. 4.]]

print(np.sin(arr10)) #arr10的每个元素求正选
print(np.sqrt(arr10)) #arr10的每个元素求平分根

结果:

[[-0.7568025   0.90929743  0.90929743  0.90929743  0.14112001  0.90929743]
 [ 0.90929743 -0.7568025   0.14112001  0.90929743  0.84147098 -0.7568025 ]]
[[2.         1.41421356 1.41421356 1.41421356 1.73205081 1.41421356]
 [1.41421356 2.         1.73205081 1.41421356 1.         2.        ]]
#数组最大最小
arr10.max()  #求最大值
arr10.argmax()  #最大值所在索引
arr10.min()  #求最小值
arr10.argmin()  #最小值所在索引
arr10.sum()  #求和
原文地址:https://www.cnblogs.com/pinpin/p/10473720.html