numpy数组
由列表构建数组
import numpy as np
np.array(list)
构建一维数组 :
list1=[1,2,3,4,5]
构建二维数组:
list1=[1,2,3,4,5]
list2=[2,4,6,8,10]
list3=[3,6,9,12,15]
array1=np.array([list1,list2,list3])
list–列表 array–数组
注意:
数组是引用类型,从现有数组创建新数组操作时,一定要copy()
区别:
-
数组是基于向量的操作,具有向量计算的特性。在科学计算中,常用到矩阵、向量操作,可以用np.array()对列表(list)进行转换。
-
数组的长度定义后就不能改变,而列表可以改变大小。
-
数组所有元素都是一个类型,而列表没有限制。
数组的常用方法
1)指定数组类型
参数:array.dtype
eg. 将列表list转换为指定float 类型的数组
array_float=np.array(list1,dtype='float')
如果非要让数组中包含不同类型的元素,将dtype='object'。但是没什么意义。
2)类型转换
函数:astype(‘目标类型’)
eg.将float类型的array_float转换为int类型、str类型
array_int=array_float.astype('int')
array_str=array_float.astype('str')
3)由数组构建列表
函数:array.tolist()
list_cp=array1.tolist()
4)数组的属性
维度:ndim
形状:shape
类型:dtype
大小:size
eg. 查看数组array1的属性 array1=(1,2,3,4,5)
array1.ndim
array1.shape
array1.dtype
array1.size
结果:
1
(5,)
int32
5
6)从数组中提取特定的项
eg.对于二维数组array2,提取前两行 前两列
array2[:2, :2]
7)支持布尔索引
eg. 判断array1中的元素是否都小于4
b=array1<4
print(b)
结果:
[ True True True False False]
bool索引:找出为True的元素
eg. 把判断为True的元素取出来
a=array1[b]
print(a)
结果:
[1 2 3]
8)数组反转
array2:
[[ 1 2 3 4 5]
[ 2 4 6 8 10]
[ 3 6 9 12 15]]
反转行
array2[::-1]
结果:
[[ 3 6 9 12 15]
[ 2 4 6 8 10]
[ 1 2 3 4 5]]
反转列
array2[:,::-1]
结果:
[[ 5 4 3 2 1]
[10 8 6 4 2]
[15 12 9 6 3]]
反转行和列
array2[::-1,::-1]
结果:
[[15 12 9 6 3]
[10 8 6 4 2]
[ 5 4 3 2 1]]
8)求最大最小值
所有元素的最大、最小、平均值:np.min(array) …max …min。
行最大值:np.amax(array,axis=1)
列最大值:np.amax(array,axis=0)
9)重构和扁平
array1=[[ 1 2 3 4 5]
[ 2 4 6 8 10]
[ 3 6 9 12 15]]
重构:改变数组的形状,但不改变维数
print(array1.reshape(5,3))
结果:
[[ 1 2 3]
[ 4 5 2]
[ 4 6 8]
[10 3 6]
[ 9 12 15]]
扁平:将多维数组转换为一维数组
- 方法1:array.flatten()
- 方法2:array.ravel()
print(array1.flatten())
结果:
[ 1 2 3 4 5 2 4 6 8 10 3 6 9 12 15]
10)生成序列数、重复数、随机数
序列数
方法1:np.arange(起点,终点,步数) 步数默认为1,起点默认为0,终点不取到
方法2:np.linspace(起点start,终点end,个数num,类型dtype) ,同样是终点不取到
PS:创建0数组 np.zero([行,列])
重复数
a=[1,2,3]
eg. a重复两次
np.tile(a,2)
ed. a中的元素每个重复两次
np.repeat(a,2)
随机数
p.arange(起点,终点,步数) 步数默认为1,起点默认为0,终点不取到
方法2:np.linspace(起点start,终点end,个数num,类型dtype) ,同样是终点不取到
PS:创建0数组 np.zero([行,列])
重复数
a=[1,2,3]
eg. a重复两次
np.tile(a,2)
ed. a中的元素每个重复两次
np.repeat(a,2)
随机数