<<学习笔记>>
一.创建数组对象
import numpy as np
# 导入numpy重新命名为np
1.数组创建
"""
np.array(object, dtype=None,copy=True,order='K',subook=False,ndmin=0)
参数介绍:
object:接收array,需创建的数组,无默认。
dtype:接收data-type,需创建的数据类型。
ndmin:接收int,创建的数组应具有的最小维数。
"""
"""
创建一维数组[1,2,3]
"""
a = np.array([1,2,3])
#等同于:
a = np.arange(1,4)
"""
创建二维数组[[1,2,3][4,5,6]]
"""
b = np.array([[1,2,3],[3,4,6]])
#等同于:
b = np.arange(1,7).reshape(2,3)
"""
创建等差数组
"""
c = np.linspace(0,10,10,endpoint=False)
print(c)
#结果:[0. 1. 2. 3. 4. 5. 6. 7. 8. 9.]
"""
创建等比数组
"""
d = np.logspace(0,10,10,endpoint=False)
print(d)
#结果:[1.e+00 1.e+01 1.e+02 1.e+03 1.e+04 1.e+05 1.e+06 1.e+07 1.e+08 1.e+09] 默认底数base为10
d = np.logspace(0,10,10,endpoint=False,base=2)
print(d)
#结果:[ 1. 2. 4. 8. 16. 32. 64. 128. 256. 512.] 底数为2
2.数组属性
"""
ndim:返回int,表示数组维数
shape:返回tuple,表示数组的尺寸,n行m列矩阵,(n,m)
size:返回int,数组元素个数
dtype:返回datatype,数组中元素类型
itemsize:返回int,数组元素的大小(单位:字节)
"""
a = np.arange(10)
print(a.shape)
#结果:(10,)表示一维数组10个元素
b = np.arange(6).reshape(3,2)
print(b.ndim)
#结果:2 表示2维数组
print(b.size)
#结果:6 表示6个元素
print(b.dtype)
#结果:int32 元素类型
print(b.itemsize)
#结果:4 数组元素大小4个字节
3.数组数据类型
"""
类型| 描述
bool True/False
inti int32/int64
int8 整数,-128~127
int16 整数,-32768~32767
int32 整数,-2^31~2^32-1
"""
"""
数组数据类型转换
例1
"""
a = np.array([1,2,3])
print(a.dtype)
#结果:int32
b = np.int8(a)
print(b.dtype)
#结果:int8
"""
数组数据类型转换
例2
"""
a = np.array([1,2,3,4],dtype=np.int8)
print(a.dtype)
#结果:int8
b = np.int32(a)
print(b.dtype)
#结果:int32
二.生成随机数
import numpy as np
# 导入numpy重新命名为np
"""
生成随机数方法都在np.random模块下
"""
1.无约束生成随机数
"""
无约束生成随机数
np.random.random(size)
"""
a = np.random.random((3,2,2))
print(a)
#结果:生成一个三个两行两列的随机数数组
2.生成服从均匀分布随机数
"""
生成服从均匀分布随机数
np.random.rand(n,m,k···)
"""
b = np.random.rand(3,2)
print(b)
#结果:生成一个服从均匀分布三行二列数组
3.生成服从正态分布随机数
"""
生成服从正态分布随机数
"""
c = np.random.randn(3,2,2)
print(c)
# 结果:生成三个服从正态分布的两行两列数组
4.生成给定范围的数组
"""
生成给定范围的数组
np.random.randint(star,end,size)
"""
d = np.random.randint(0,10,(3,2))
print(d)
#结果:生成一个三行两列数值范围为0-10的随机数数组
三.索引
"""
注意:数组下标从零开始
"""
1.一维索引
"""
一维索引
"""
a = np.arange(10)
print(a[9])
#结果:[9]
print(a[0:2])
#结果:[0 1]
print(a[5:])
#结果:[5 6 7 8 9]
print(a[5:-1])
#结果:[5 6 7 8]
print(a[5:-1:2])
#结果:[5 7]
2.多维索引
"""
二维索引
"""
a = np.random.rand(6).reshape(3,2)
print(a)
#结果:3行2列服从均匀分布数组
print(a[2,1])
#结果:第2行第1列的数值
print(a[2,:])
#结果:输出第2行
四.变换数组形态
1.reshape函数
"""
使用reshape改变数组形状
"""
a = np.array([1,2,3,4,5,6]).reshape(2,3)
# 数组a就变成一个2行3列数组
2.flatten函数展平数组
"""
使用flatten函数展平数组
arr.flatten() #横向展开
arr.flatten(order="F") #纵向展开
"""
a = np.arange(6).reshape(2,3)
print("数组a",a)
b = a.flatten() #横向展开
c = a.flatten(order="F") #纵向展开
print("横向展开",b)
print("纵向展开",c)
#结果:
#数组a [[0 1 2][3 4 5]]
#横向展开 [0 1 2 3 4 5]
#纵向展开 [0 3 1 4 2 5]
3.组合数组
"""
1.横向组合:
np.hstack((arr1,arr2))
np.concatenate((arr1,arr2),axis=1)
2.纵向组合:
np.vstack((arr1,arr2))
np.concatenate((arr1,arr2),axis=0)
"""
a = np.arange(6).reshape(3,2)
b = np.arange(2,8).reshape(3,2)
c=np.hstack((a,b))
print("横向组合a,b",c)
#结果:[[0 1 2 3][2 3 4 5][4 5 6 7]]
4.分割数组
"""
1.横向切割:
np.hsplit(arr,2)
np.split(arr,2,axis=1)
2.纵向切割:
np.vsplit(arr,2)
np.split(arr,2,axis=0)
"""
a = np.arange(16).reshape(4,4)
b = np.split(a,2,axis=1)
c = np.split(a,2,axis=0)
print("横向切割",b)
print("纵向切割",c)
'''
#结果:
横向切割 [array([[ 0, 1],
[ 4, 5],
[ 8, 9],
[12, 13]]), array([[ 2, 3],
[ 6, 7],
[10, 11],
[14, 15]])]
纵向切割 [array([[0, 1, 2, 3],
[4, 5, 6, 7]]), array([[ 8, 9, 10, 11],
[12, 13, 14, 15]])]
'''
5.英语角
1.flatten 变平,推倒
2.stack 一堆,一叠
3.concatenate 连在一起,连锁
4.split 分裂,分割