02 nupmpy_01 数组的创建与操作

1. 数组的创建

import numpy as np
# 创建一维数组
arr1 = np.array([1,2,3,4])
arr1

# 创建一个四行三列的二维数组
arr2 = np.array([[1.1,2,3],[2,3,4],[5,6,7],[6,7,8]])
arr2

# 数组具有同质性,我们创建arr2的时候给他的数字有int,有float,输出数组会发现全都变成了float

2. 数组元素的获取

# 一维数组, 获取索引维2的数组
arr1[2]

#  一维数组,获取索引为1 和索引为3的元素
arr1[[1,3]]

# 二维数组,获取第三行第三列的数组 
arr2[2,2]

# 获取第三行的所有元素
arr2[2,:]

# 获取第二列所有元素
arr2[:,1]

# 获取第2至第4行,2至5列
arr2[1:, 1:]

# 获取第一行,最后一行, 第一列,最后一列构成的数组,
# 对于这种不连续取行和列的情况我们要使用 np的ix_函数将索引封装一下
arr2[np.ix_([0,-1],[0,-1])]

  说明:对于一维数组,可以直接使用列表元素的索引方式,同时还可以给索引传入一个列表,列表里边放你想要的元素的索引值

     对于二维数组,要用  [行索引, 列索引] 的方式,行或者列索引可以用 1:3 代表取索引维1 和 2 的行或列

     对于二维数组,要取不连续的行或者列索引的情况,要用 np.ix_() 函数封装一下。如 np.ix_([1,3,4],[2,4])  

3.数组的常用属性

  对于从外部读入的数据,我们可以通过数组的属性来获取数组信息.如维度,行列数,值类型等信息

3.1 读入数据

  

arr = np.genfromtxt(fname='./a.csv', delimiter=',',skip_header=0, dtype='float')
arr

# 参数详解
- fname : 指定需要导入的文件路径
- dtype : 指定导入数据的数据类型,默认是float,如果数据集合中有字符串类型,则必须指定为str
- delimiter: 指定数据集列分隔符
- skip_header : 默认为0,不跳过首行

# 查看属性:
查看数据结构
type(arr)
查看维度
arr.ndim 
查看行列
arr.shape
查看数组元素数据类型
arr.dtype
查看数组元素个数
arr.size

4. 数组的形状处理 

数组变形

arr = np.array( [1,2,3],[10,20,30],[100,200,300],[2,3,4] )

# 将arr变成2行6列的数组
arr1 = arr,reshape(2,6)
arr.resize(2,6)
以上两种发发都能实现数组的变形,区别是reshape会返回一个新值,而resize在原数据基础上进行修改

数组降维

arr = np.array([[1,10,100],[2,20,200],[3,30,300]])
# 默认行排序降维
arr1 = arr.ravel()
arr2 = arr.flatten()
arr3 = arr.reshape(-1)
# 按列排序
arr1 = arr.ravel(order='F')
arr2 = arr.flatten(order='F')
arr3 = arr.reshape(-1, order='F')

以上三种方式都能实现降维,区别是 ravel返回的是原数据的复制,对其进行修改不会影响原数据的值,而flatten和reshape是原数据的试图,对其修改会改变原数据的值

数组堆叠

arr1 = np.array([[0,0,0],[0,0,0],[0,0,0]])

# 纵向数组堆叠
np.vstack([arr,arr1])
np.row_stack([arr,arr1])
array([[   1, 1000, 3000],
       [4000,   20,  200],
       [   3,   30,  300],
       [   0,    0,    0],
       [   0,    0,    0],
       [   0,    0,    0]])
# 横向数组堆叠 np.hstack([arr,arr1]) np.column_stack([arr,arr1])
array([[   1, 1000, 3000,    0,    0,    0],
       [4000,   20,  200,    0,    0,    0],
       [   3,   30,  300,    0,    0,    0]])

 

posted @ 2019-11-07 23:32  眼镜儿  阅读(244)  评论(0编辑  收藏  举报