导入
import numpy as np
数组生成
1·直接生成 使用字典,列表,元组及其嵌套
a=np.array([1,2,3,4],dtype=np.float64) #可以指定类型,也可以不指定,不指定就生成给定的数据
b=np.array([[1,2,3,4],[5,6,7,8]])
2·使用函数
np.arange(n) 类似range()函数,返回ndarray类型,元素从0到n‐1
np.ones(shape) 根据shape生成一个全1数组,shape是元组类型
np.zeros(shape) 根据shape生成一个全0数组,shape是元组类型
np.full(shape,val) 根据shape生成一个数组,每个元素值都是valnp.eye(n) 创建一个正方的n*n单位矩阵,对角线为1,其余为0
np.ones_like(a) 根据数组a的形状生成一个全1数组
np.zeros_like(a) 根据数组a的形状生成一个全0数组
np.full_like(a,val) 根据数组a的形状生成一个数组,每个元素值都是val
np.linspace() 根据起止数据等间距地填充数据,形成数组
np.concatenate() 将两个或多个数组合并成一个新的数组
数组判断
数组大小
np.size(b)-----------> 8
形状
np.shape(b)---------->(2,4)
b.shape
维度
b.ndim--------------->2维
数据类型
b.dtype ------------->int32(32位长度的整数,取值:[‐2**31,(2**31)‐1])
元素大小(字节)
b.itemsize----------->4
转换
高维度便于展示,不利于计算,可以使用函数进行转换后在计算
.reshape(shape) 不改变数组元素,返回一个shape形状的数组,原数组不变(())括号内传递元组
一维数组的转换
print(np.shape(cat))----->(722, 900, 3)--->cat是一张图片
cat2=cat.reshape((722*900*3))
cat3=cat.reshape((-1))#传递进去负数也可以使得数组变为一维数组
.resize(shape)与.reshape()功能一致,但修改原数组
.swapaxes(ax1,ax2) 将数组n个维度中两个维度进行调换
.flatten() 对数组进行降维,返回折叠后的一维数组,原数组不变
数据类型转换
c=b.astype(np.float16)---->(new_type)
数组的维度变换
a= np.ones((2,3,4), dtype=np.int32)
数组向列表的转换
ls= a.tolist()
数字字符串的转换
d=np.array(['12'])
e=d.astype(np.float64)
索引
一维
a=np.array([1,2,3,47,5])
print(a[2])----->3
a[2]------>下标为2的元素
argwhere()返回索引下标
取出符合条件的数值
index=np.argwhere(cat1<10)
cat1[index]
多维
c=np.arange(24).reshape((2,3,4))
print(c[1,2,2])------------>22
c[1,2,2]------->一维,第二行,第二列(先行后列)
切片
一维
print(a[1:3:2])------------------>[2]
a[1:3:2]--->元素下标1到下标3,步长为2
多维
print(c[:,1:3,:])
c[:,1:3,:]------>行全选,列选1到3,步长为0
np.split()
x = np.arange(24).reshape(4,6)
y=np.split(x,2,axis=1)--->竖着切x,切两刀
默认横着切,axis=1竖着切
Numpy1·(数组的生成、判断、转换、索引(取出符合条件的数值)、切片)
最新推荐文章于 2022-06-21 20:19:14 发布