关于数组元素的基本操作
import numpy as np
#%% md
创建数组
这里注意一下,通过print
数组的数据分割用的是空格,而列表用的是逗号
数据的类型必须一致
如果一个有小数点,那么所有数据都会变成浮点
是字符串, 变成字符串
1.列表创数组
#%%
list_array = [i*3 for i in range(8)]
list_array=np.array(list_array)
#list_array
print(list_array)
#%% md
2.元组创建数组
#%%
tuple_array = (tuple([i*3 for i in range(8)]))
tuple_array=np.array(list_array)
#list_array
print(list_array)
#%% md
3.字符串创建数组
#%%
str_array= np.array(‘字符串’)
print(str_array)
tuple_array.dtype #dtype 查看数组的数据的数据类型
#%% md
4.直接生产数组
#%%
#数列数组
0开始11停隔一个数,也就是相减为2
rang_array=np.arange(0,11,2)
print(rang_array)
#零数组 一数组
20个零 零数组是浮点型
zero_array=np.zeros(20)
20个一 一数组是浮点型
ones_array=np.ones(20)
print(zero_array)
print(ones_array)
print(zero_array.dtype)
#%%
#e矩阵 5*5的单位矩阵 二阶矩阵
e_array=np.eye(5)
print(e_array)
#%% md
多维数组
几个中阔号就是几维数组
可以通过给列表或数组加[]直接给他们上升维度
#%%
high_dimension_array=np.eye(3)
print(high_dimension_array)
high_dimension_array=np.array([high_dimension_array])
print(high_dimension_array)
#%% md
数组的属性
#%%
#秩
high_dimension_array.ndim
#%%
#形状 懵了就看逗号和中阔号
high_dimension_array.shape
# 1 3 3
#这里是 一个二维的数组 一个二位数组有3个一维的数组,一个一维数组有3个元素
#%%
#数据个数
#len()表示下一级的数组有几个 比如e数组二维的
打印了5 ,为5个一维数组
print(len(e_array))
print(e_array)
print(‘-’*60)
这个数组是三维的 二维数组只有一个 ,所以打印了1
print(len(high_dimension_array))
print(high_dimension_array)
#%%
e_array.size
#size能直接出具体数据数量
#%%
int32和 int64 一个单位元素占4 8 字节 也叫 i4 i8
#dtype定义数组的元素类型
dtype_array =np.eye(5,dtype=‘int32’)
dtype_array.itemsize
#%% md
改变数组维度
#%%
#reshape不改变原来的数组 但是要有变量接受它 所以参数乘起来一定要相同
two_array=ones_array
#三维
two_array=two_array.reshape(2,2,5)
print(two_array)
#一维
two_array=two_array.reshape(20,)
print(two_array)
#二维
two_array=two_array.reshape(4,5)
print(two_array)
#%%
#直接降成一维 flatten 不改变原数据
one_dimension_two_array=two_array.flatten()
one_dimension_two_array[1]=999
print(‘后文件’)
print(one_dimension_two_array)
print(‘前文件’)
print(two_array)
print(‘*’*60)
one_dimension_two_array=two_array.ravel()
one_dimension_two_array[1]=999
print(‘后文件’)
print(one_dimension_two_array)
print(‘前文件’)
print(two_array)
#%% md
数组操作
数字索引
#%%
#切片
shuyin_array =np.arange(0,12)
qiepian_array = shuyin_array[0:8]
print(qiepian_array)
#多维数组切片
shuyin_array=shuyin_array.reshape(3,4)
#这里是二维的数组所以应该是第二行
diyiwei_shuyin_array=shuyin_array[1]
#对第一行再切片
geti_shuyin_array=diyiwei_shuyin_array[3]
print(geti_shuyin_array)
#直接打的两种方法
print(shuyin_array[1][3])
print(shuyin_array[1,3])
#对列切片
#第二列
lie_shuyin_array=shuyin_array[:,2]
print(lie_shuyin_array)
print('*‘60)
#行列组合切片
#各自切片,分开 高维在前
hanglie_shuyin_array=shuyin_array[:3,2:4]
print(hanglie_shuyin_array)
#或者分开切片 对于二维来说没逗号是行,有逗号是列
hanglie_shuyin_array=shuyin_array[:3][:,2:4]
print(hanglie_shuyin_array)
print('’*60)
#前后切片和顺序逆序切片 和步长
line_array=np.arange(20)
#如果第三个参数是负数 那么前俩个数 也就是起点和终点 起点>终点 这时第一个参数默认值为原数组最后
hou_array=line_array[:6:-2]
#如果第三个参数是正数 那么一切正常
qian_array=line_array[:6:2]
print(hou_array)
print(qian_array)
#%% md
条件索引和赋值
#%%
condition_array=np.arange(20)
#检索5-15的数
这里 &表示交集 |表或集
f_to_f=condition_array[(condition_array<15) & (5<condition_array)]
print(f_to_f)
~表非集
print(‘*’*60)
no_f_to_f=condition_array[~((condition_array<15) & (5<condition_array))]
print(no_f_to_f)
5-15的数变成1
print(‘*’*60)
condition_array[(condition_array<15) & (5<condition_array)] =1
print(condition_array)
#判断切分
condition_array=np.arange(20)
divid=np.where((condition_array<15) | (5<condition_array),1,0)
print(divid)