自学Python——Numpy

0.简介

“NumPy系统是Python的一种开源的数值计算扩展。这种工具可用来存储和处理大型矩阵,比Python自身的嵌套列表(nested list structure)结构要高效的多(该结构也可以用来表示矩阵(matrix))。”——百度百科

1.初识Numpy

“引包”

import numpy

1.1生成指定元素的数组(矩阵)matrix

(1)直接给出元素

vector=numpy.array([1,2,3,4,5])
print(type(vector))

(2)借助list

list_1=[[1,2,3],[3,4,5],[5,6,7]]
print(list_1)
matrix=numpy.array(list_1)

print(vector)
print(matrix)

1.2转换数组的形状

(1)reshape

array_reshape_m=numpy.arange(9).reshape(3,3)
print(array_reshape_m)

(2) 将矩阵变成一维的

array_ravel_m=array_reshape_m.ravel()
print(array_ravel_m)

(3)利用属性进行调整

array_ravel_m.shape=(3,3)
print(array_ravel_m)

1.3生成指定规模的数组(矩阵)matrix

(1)生成包含连续的元素的数组

array_test_1=numpy.arange(9)
print(array_test_1)

array_test_m=numpy.arange(10,30,5)# 10-30(要头不要尾),每隔5个生成一个
print(array_test_m)
array_test_m=numpy.arange(0,3,0.5)# 10-30(要头不要尾),每隔5个生成一个
print(array_test_m)

(2)生成指定规模的零数组——默认类型是float类型

array_zero_m=numpy.zeros((2,4))
print(array_zero_m)

(3)生成指定规模的1数组(同时可以指定数组元素的类型)——默认类型是float类型

array_one_m=numpy.ones((2,4),dtype=numpy.int32)
print(array_one_m)

(4)生成指定规模的随机元素(0-1)数组——默认类型是float类型

array_random_m=numpy.random.random((2,4))
print(array_random_m)

(5)在某个区间内平均生成指定个数的数组

array_linspace_m=numpy.linspace(0,10,21)# 最小值,最大值,数组元素个数(头尾都要)
print(array_linspace_m)

2.Numpy属性及取元素方法

2.1属性

print(vector.shape)#数组当前是 几行几列的
print(vector.data())
print(vector.dtype)# 数组当前存储数据的类型
print(vector.ndim)# 当前数组是几维数组(现在是一维数组)
print(vector.size)# 当前数组有多少个元素

2.2 截取数组中部分元素

print(matrix)
print(matrix[:,2])
print(matrix[0,0])
print(matrix[:,0])
print(matrix[0:2,0:2])
print(matrix[0:2,:])

3.Numpy一维数组(矩阵)的常用方法

print(vector.max())
print(vector.mean())
print(vector.min())
print(vector.argmax()) # 最大值的索引
print(vector.argmin())# 最小值的索引

4.操作数组中等于某个值的全体数据

print(matrix==3)
print(matrix[matrix==3])

matrix[matrix==3]=100
print(matrix)

matrix[(matrix==100)|(matrix==5)]=99
print(matrix)

5.整体的类型转换

print(matrix.dtype)

matrix_str=matrix.astype(str)
print(matrix_str.dtype)

matrix_float=matrix.astype(float)
print(matrix_float.dtype)

6.Numpy多维数组(矩阵)的常用方法

对于多维数组,可以整体调用函数或者指定对行或者列操作

print(matrix)

print(matrix.sum())# 求全体的和
print(matrix.sum(axis=0))# 求每列的和
print(matrix.sum(axis=1))# 求每行的和

print(matrix.max())# 求整体的最大值
print(matrix.max(axis=0))# 求每列的最大值
print(matrix.max(axis=1))# 求每行的最大值

print(matrix.argmax())# 求整体的最大值
print(matrix.argmax(axis=0))# 求每列的最大值索引
print(matrix.argmax(axis=1))# 求每行的最大值索引

7.Numpy单个数组(矩阵)的常见操作

准备工作:

a=numpy.array([25,36,49,64])
b=numpy.arange(4)
print(a)
print(b)

7.1四则运算

c=a-b
print(c)


c=a-1
print(c)


c=b**2
print(c)

c=a<30
print(c)

c=numpy.sqrt(a)
print(c)

7.2转置

a=numpy.arange(15)
a.shape=(3,5)
print('a')
print(a)
print('a的转置')
print(a.T)

7.3 矩阵的复制

a=numpy.array([[25,36],[49,64]])
c=a# 并没有复制,只是让二者共同指向同一个地址空间,改变,互相受影响
print(c is a)

(1)浅复制

元素会共用

c=a.view()
print(c is a)
c[0,0]=-1
print(a)

(2)深度复制

完完全全的复制出来一个a,并存放到另一个空间,并让c指向它,二者之后的操作没有关系

c=a.copy()
print(c is a)
c[1,1]=-1
print(a)

7.4 以某个矩阵为元素,进行整体扩充

c=numpy.tile(a,(2,2))
print(c)

7.5排序

a=numpy.array([[25,3],[4,64]])
print(a)

c=numpy.sort(a)# 默认会按照行排序
print(c)

c=numpy.sort(a,axis=0)# 按照列排序
print(c)

c=numpy.sort(a,axis=1)#按照行排序
print(c)

c=numpy.argsort(a,axis=1)#大小位置顺序
print(c)

8.Numpy数组(矩阵)之间的常见操作

准备工作:

A=numpy.array([[0,1],[1,0]])
B=numpy.array([[1,2],[3,4]])
print('A')
print(A)
print('B')
print(B)

8.1两个矩阵对应元素直接相乘(内积)

C=A*B
print('A*B')
print(C)

8.2矩阵相乘(行乘以列,再求和)

C=A.dot(B)
print('A·B')
print(C)

C=numpy.dot(A,B)
print('A·B')
print(C)

8.3拼接

(1)垂直拼接(列一样多)

C=numpy.vstack((A,B))
print('AB')
print(C)

(2) 水平拼接(行一样多)

C=numpy.hstack((A,B))
print('AB')
print(C)

8.4分割

(1)垂直分割

A=numpy.floor(10*numpy.random.random((12,2)))
print(A)
C=numpy.vsplit(A,3)
print('A垂直平均分割三份')
print(C)

C=numpy.vsplit(A,(3,4))
print('A垂直平均分割三份')
print(C)

(2)水平分割

A=numpy.floor(10*numpy.random.random((2,12)))
print(A)
C=numpy.hsplit(A,3)# 3指的是平均分割的份额
print('A水平平均分割三份')
print(C)

C=numpy.hsplit(A,(3,4))# 指定切割的位置
print('分别在3,4处分割')
print(C)
    原文作者:新手村的0级玩家
    原文地址: https://www.jianshu.com/p/c4f566f8e2c1
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞