(二)NumPy的N维数组与数组的索引、切片和排序

数组的结构

1、字符串和数字不能同时存在于一个数组中;
2、正常的函数格式为np.函数名(参数),属性函数为x.函数名,涉及转换、大部分数组运算的格式为a=x.函数名(参数)
3、np.函数名(x,参数)一般情况下与x.函数名(参数)可替代

import numpy as np
a=np.array([[0.1,0.2,0.4,0.3],[0.2,0.2,0.1,0.5]])
a.shape#二维数组,两行四列
Out[3]: (2, 4)
b=[0.1,0.2,0.4,0.3,0.2,0.2,0.1,0.5]
c=np.array(b);c#将列表转换为一维数组
Out[5]: array([0.1, 0.2, 0.4, 0.3, 0.2, 0.2, 0.1, 0.5])
d=c.reshape(2,4);d#转换为二维数组(直接用列表转也行)
Out[7]: 
array([[0.1, 0.2, 0.4, 0.3],
       [0.2, 0.2, 0.1, 0.5]])
e=d.ravel();e#降维
Out[8]: array([0.1, 0.2, 0.4, 0.3, 0.2, 0.2, 0.1, 0.5])
d.ndim#查看维度
Out[9]: 2
d.size#查看元素个数
Out[10]: 8
d.dtype#查看元素类型
Out[12]: dtype('float64')

数组的生成

a=np.arange(10);a#生成整数
Out[14]: array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
b=np.arange(1,10,2);b#根据步长2生成整数
Out[15]: array([1, 3, 5, 7, 9])
c=np.linspace(0,10,6);c#生成等差数列。第二个参数包括在内,第三个参数是元素个数
Out[17]: array([ 0.,  2.,  4.,  6.,  8., 10.])
d=np.zeros((2,4));d#生成二维全0数组,注意有两层括号,一维则只需一层
Out[19]: 
array([[0., 0., 0., 0.],
       [0., 0., 0., 0.]])
e=np.zeros_like(d);e#生成一个和d的格式一样的全0数组
Out[20]: 
array([[0., 0., 0., 0.],
       [0., 0., 0., 0.]])
f=np.ones_like(e);f
Out[21]: 
array([[1., 1., 1., 1.],
       [1., 1., 1., 1.]])
g=np.eye(5);g#生成一个5*5的单位矩阵
Out[23]: 
array([[1., 0., 0., 0., 0.],
       [0., 1., 0., 0., 0.],
       [0., 0., 1., 0., 0.],
       [0., 0., 0., 1., 0.],
       [0., 0., 0., 0., 1.]])

数组的索引、切片和排序

stock=np.array([[0.1,0.2,0.4,0.3],[0.2,0.2,0.1,0.5]])
stock[1,-1]
Out[27]: 0.5
m=np.where(stock<0.4);m#条件索引
Out[28]: 
(array([0, 0, 0, 1, 1, 1], dtype=int64),
 array([0, 1, 3, 0, 1, 2], dtype=int64))
 #表示有6个元素符合条件,告诉你它们在哪行哪列。比如第四个位于二行一列
p=stock[1,2:];p#提取第二行、第三列到最后一列的数据
Out[29]: array([0.1, 0.5])
q=stock[:,1:-1];q#提取所有行、第二列到第三列的数据
Out[32]: 
array([[0.2, 0.4],
       [0.2, 0.1]])
np.sort(stock)#从小到大按行排序,axis=1
Out[33]: 
array([[0.1, 0.2, 0.3, 0.4],
       [0.1, 0.2, 0.2, 0.5]])
np.sort(stock,axis=0)#从小到大按列排序
Out[35]: 
array([[0.1, 0.2, 0.1, 0.3],
       [0.2, 0.2, 0.4, 0.5]])
发布了31 篇原创文章 · 获赞 2 · 访问量 1622

猜你喜欢

转载自blog.csdn.net/hzk427/article/details/103827610