numpy 基础操作
程序员文章站
2022-06-27 17:01:07
Numpy 基础操作¶ 以numpy的基本数据例子来学习numpy基本数据处理方法 主要内容有: 创建数组 数组维度转换 数据选区和切片 数组数据计算 随机数 数据合并 数据统计计算 In [1]: import numpy as np 创建一维数组¶ In [2]: data = np.arang ......
in [1]:
import numpy as np
创建一维数组
in [2]:
data = np.arange(15)
data
out[2]:
reshape进行维度转换
- data.reshape(rows, cols), 转换的行数,列数。
- -1表示使用默认计算,reshape(3, -1),表示三行,列数根据数据自动计算
- reshape(-1, 5)表示5列,行数根据计算得出
in [3]:
data = data.reshape(3,5)
data
out[3]:
np.newaxis增加维度
为数据增加维度,下面例子展示增加了一个维度
数据变为三行,一列,垂直五的数据
in [4]:
d = data[:, np.newaxis]
d
out[4]:
in [5]:
d.shape
out[5]:
in [6]:
data.shape
out[6]:
读取逗号分割数据
in [7]:
url = 'https://archive.ics.uci.edu/ml/machine-learning-databases/iris/iris.data'
iris_2d = np.genfromtxt(url, delimiter=',', dtype='object')
iris_2d[:10]
out[7]:
数据切片和类型转换
使用[m, n]来对数据取值或者切片
- [:, n] 取列数据
- [m, :] 取行数据
- [m:n, m:n] 数据切片
astype来指定数据类型
in [8]:
names = ('sepallength', 'sepalwidth', 'petallength', 'petalwidth', 'species')
sepallength = iris_2d[:, 0].astype('float')
petallength = iris_2d[:, 2].astype('float')
sepallength
out[8]:
in [9]:
petallength
out[9]:
数据运算
numpy数据运算语法与python基本一致,但是是数据中的每个数据进行运算
- arr数据与单个数据运算,arr中每个数据与单数进行计算,返回新的arr
- arr之间运算,arr对用位置的数据一一计算,返回新的arr
in [10]:
volume = (np.pi * petallength * (sepallength**2))/3
volume
out[10]:
数据维度转换
volume原来是一维的,增加维度后,变为二维
in [11]:
volume = volume[:, np.newaxis]
volume
out[11]:
计算示例
in [12]:
data
out[12]:
in [13]:
# 取第四列数据,每个数据+10
d = data[:,4] +10
d
out[13]:
in [14]:
d = d[:, np.newaxis]
d
out[14]:
数据纵向堆叠
- np.hstack([data1, data2]), 把data2在列的方向上添加到data1上
- np.vstack([data1, data2]), data2在行的方向上添加到data1上
in [15]:
np.hstack([data,d])
out[15]:
查找数据
np.partition快速查找第n大的值
in [16]:
l=[3,4,5,2,1]
np.partition(l,kth=-4)
out[16]:
随机数
in [17]:
b = np.random.rand(10)
b
out[17]:
in [18]:
b = np.random.uniform(0,10,5)
b
out[18]:
in [19]:
np.random.randn(5)
out[19]:
in [20]:
np.random.randint(0,10,5)
out[20]:
in [21]:
np.random.randint(0,10,5)
out[21]:
in [22]:
np.random.seed(5)
np.random.randint(0,10,5)
out[22]:
in [23]:
np.random.seed(6)
np.random.randint(0,10,5)
out[23]:
in [24]:
np.random.uniform(10,100,10)
out[24]:
in [25]:
np.random.standard_normal(10)
out[25]:
in [26]:
np.linspace(1,20, 10)
out[26]:
in [27]:
np.arange(0,5)
out[27]:
in [28]:
a = np.arange(10).reshape(10)
a
out[28]:
in [29]:
a+a
out[29]:
in [30]:
a-a
out[30]:
in [31]:
a*a
out[31]:
in [32]:
a/a
out[32]:
in [33]:
a.dot(a)
out[33]:
in [34]:
a
out[34]:
in [35]:
b = np.arange(12).reshape(3,4)
b
out[35]:
in [36]:
b[0]
out[36]:
in [37]:
b[:,0]
out[37]:
in [38]:
b[0,:]
out[38]:
in [39]:
b[-1]
out[39]:
in [40]:
b.size
out[40]:
in [41]:
b.shape
out[41]:
数据拉平
将多维数据将为一维
- ravel 方法是返回的视图,修改数据会影响原数据
- flat 方法是返回原数据的copy,不会影响原数据
in [42]:
b.ravel()
out[42]:
in [43]:
[x for x in b.flat]
out[43]:
in [44]:
b.flat[3]
out[44]:
数据resize和reshape
- reshape:有返回值,所谓有返回值,即不对原始多维数组进行修改;
- resize:无返回值,所谓有返回值,即会对原始多维数组进行修改;
in [45]:
b.reshape(3,4)
out[45]:
in [46]:
c = b.resize(3,4)
c
in [47]:
b
out[47]:
arr平均值
np.mean(d, axis=0),计算平均值,axis来指定按那个轴运算
in [48]:
np.mean(b, axis=0)
out[48]:
in [49]:
a = np.array([1,0.2,3])
in [50]:
a
out[50]:
in [51]:
a.dtype
out[51]:
in [52]:
np.arange(10)
out[52]:
特殊矩阵
in [53]:
np.ones((5,5))
out[53]:
in [54]:
b
out[54]:
in [55]:
np.ones_like(b)
out[55]:
in [56]:
np.identity(4)
out[56]:
in [57]:
np.eye(4)
out[57]:
取数据示例
in [58]:
a
out[58]:
in [59]:
b
out[59]:
in [60]:
b[:,2]
out[60]:
in [61]:
# 布尔值取数据
b[b>3]
out[61]:
in [62]:
b
out[62]:
in [63]:
b[b==3]
out[63]:
in [64]:
b
out[64]:
in [65]:
c = b[b!=3]
in [66]:
c
out[66]:
花式索引
取特定的行,并按照指定顺序排序
in [67]:
b
out[67]:
in [68]:
b[[2,0,1]]
out[68]:
in [69]:
b = np.arange(32).reshape(8,4)
b
out[69]:
in [70]:
b[[1,5,7,2],[0,3,1,2]]
out[70]:
in [71]:
b[[1,5,7,2]][:,[0,3,1,2]]
out[71]:
in [72]:
b
out[72]:
矩阵转置,轴向交换
in [73]:
b.swapaxes(0,1)
out[73]:
in [74]:
b.swapaxes(1,0)
out[74]:
in [75]:
b
out[75]:
矩阵运算示例
in [76]:
np.add(b,b)
out[76]:
in [77]:
np.sort(b[[2,0,1]])
out[77]:
in [78]:
b[[2,0,1]]
out[78]:
in [79]:
np.linalg.eig(b[0:4])
out[79]:
赞 (0)
打赏
微信扫一扫
相关文章:
版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。
发表评论