numpy 多维数组及数组操作
NumPy是Python语言的一个扩充程序库。支持高级大量的维度数组与矩阵运算,此外也针对数组运算提供大量的数学函数库。Numpy内部解除了Python的PIL(全局解释器锁),运算效率极好,是大量机器学习框架的基础库!
简单理解:
2维是EXCEL表格里面的多行多列
3维是EXCEL表格里面的多行多列+下面的sheet1、2、3
4维是包括了同一个文件夹下不同名称的EXCEL表格
5维是同一分区不同文件夹下不同名称的EXCEL表格
6维是不同分区不同文件夹下不同名称的EXCEL表格

多维数组非常像列表,但通常它的元素类型是相同的,且都是数字,下面是一个简单的例子。
声明数组:
import numpy as np
a = np.array([1, 2, 3, 4, 5, 6])
print(f'一维数组: {a}')
结果:
a = np.array([[1, 2, 3], [4, 5, 6]])
print(f'二维数组: {a}')
结果: 
# 使用reshape方法反向生成多维数组 三维数组
nlist_3 = np.array(range(24)).reshape((3,2,4))
print(nlist_3)
结果:
#反向声明一个size为20个元素的四维数组
nlist_4 = np.array(range(20)).reshape((1,2,5,2))
print(nlist_4)
结果:
数组操作:
print(f'维度(axes or dimensions)): {a.ndim}')
结果:
print(f'每个维度长度: {a.shape}')
结果:
print(f'数组长度: {a.size}')
结果:
print(f'数组类型: {type(a)}')
结果:
print(f'数组元素类型: {a.dtype}')
结果:
print(f'数组元素大小(bytes): {a.itemsize}')
结果:
print(f'数组元素: {a.data}')
结果:
#data属性,用来打印数据缓冲区 buffer
print(a.data)
#使用浮点作为元素类型
nlist_flaot = np.array([1.0,2.0,3.0])
print(nlist_flaot.dtype)
结果:
#使用字符串作为元素类型
nlist_string = np.array(['a','b','c'])
print(nlist_string.dtype)
结果:
#自动生成使用ones方法,自动生成元素为1的多维数组
nlist_ones = np.ones((4,4))
print(nlist_ones)
print(nlist_ones.dtype)
结果:
#使用zeros来生成元素为0的多维数组
nlist_zeros = np.zeros((4,4))
print(nlist_zeros)
print(nlist_zeros.dtype)
结果:
#使用empty方法来生成随机多维数组 使用第二个参数指定数据类型 不指定为float64
nlist_empty = np.empty([2,2],dtype=np.int)
print(nlist_empty)
print(nlist_empty.dtype)
结果:
#把普通list转换成数组
x = [1,2,3]
x = [[1,2,3],[4,5]]
print(type(x))
nlist = np.asarray(x)
print(nlist)
print(nlist.ndim)
print(nlist.shape)
print(type(nlist))
结果:
#把普通list转换成数组 二维数组
x = [1,2,3]
x = [[1,2,3],[4,5,6]]
print(type(x))
nlist = np.asarray(x)
print(nlist)
print(nlist.ndim)
print(nlist.shape)
print(type(nlist))
结果:
#frombuffer 通过字符串(buffer内存地址)切片来生成多维数组 b指定字节
my_str = b'Hello Word'
nlist_str = np.frombuffer(my_str,dtype='S1')
print(nlist_str)
结果:
x = np.array([[1,2],[3,4]])
print(x) #指定axis属性可以指定当前多维数组的维度 keepdims=True让其维度不变
sum0 = np.sum(x,axis=0,keepdims=True)
print(sum0)
print('--------------')
sum1 = np.sum(x,axis=1,keepdims=True)
print(sum1)
结果:
#多维数组赋值
x = np.array([1,2])
y = x.copy()
y[0] = 3
print(x)
结果:
#维度级的运算
a = np.array([[1,2],[3,4],[5,6]])
b = np.array([[10,20],[30,40],[50,60]]) #vstack方法
suma = np.vstack((a,b))
print(suma) #hstack方法
sumb = np.hstack((a,b))
print(sumb)
结果:
#多维数组调用
nlist = np.array([[1,2],[3,4],[5,6]])
print(nlist[0])
#取元素4
print(nlist[1][1])
#第二种写法
print(nlist[1,1])
nlist[2,1] = 7
print(nlist)
结果:
#删除方法 delete
#删除nlist第二行
print(np.delete(nlist,1,axis=0))
print(np.delete(nlist,0,axis=1))
结果:
简单的计算及数组值交换操作
import numpy as np q1 = np.zeros(shape=10)
#给第五个元素赋值
q1[4] = 1
# print(q1) # 创建一个每一行都是0到4的5*5矩阵
q2_list = [0,1,2,3,4]
# 使用list乘法反推矩阵
q2 = np.array(q2_list * 5).reshape(5,5)
# print(q2) q3 = np.array([[1,2,3],[4,5,6],[7,8,9]])
#使用所引交换元素
# 换行
q3 = q3[[2,1,0]]print(q3) #原数组为一维数组,内容为从 0 到 100,抽取出所有偶数。
q4 = np.array(range(101))
#判断偶数
q4 = q4[q4 % 2 == 0]
print(q4)
numpy 多维数组及数组操作的更多相关文章
- Numpy数组对象的操作-索引机制、切片和迭代方法
前几篇博文我写了数组创建和数据运算,现在我们就来看一下数组对象的操作方法.使用索引和切片的方法选择元素,还有如何数组的迭代方法. 一.索引机制 1.一维数组 In [1]: a = np.arange ...
- Numpy - 多维数组(上)
一.实验说明 numpy 包为 Python 提供了高性能的向量,矩阵以及高阶数据结构.由于它们是由 C 和 Fortran 实现的,所以在操作向量与矩阵时性能非常优越. 1. 环境登录 无需密码自动 ...
- php对二维数组进行相关操作(排序、转换、去空白等)
php对二维数组进行相关操作(排序.转换.去空白等) 投稿:lijiao 字体:[增加 减小] 类型:转载 时间:2015-11-04 这篇文章主要介绍了php对二维数组进行相关操作,包括php对 ...
- Numpy数组的基本运算操作
一.算术运算符 In [3]: a = np.arange(0,5) Out[3]array([0, 1, 2, 3, 4]) In [4]: a+4 Out[4]: array([4, 5, 6, ...
- numpy多维数组
1 多维数组的切片用法 c = np.array([[[0,1,2],[4,5,6],[8,7,5],[10,11,12]],[[6,2,3],[9,8,34],[100,101,102],[110, ...
- 手把手numpy教程【二】——数组与切片
本文始发于个人公众号:TechFlow,原创不易,求个关注 今天是Numpy专题的第二篇,我们来进入正题,来看看Numpy的运算. 上一篇文章当中曾经提到过,同样大小的数据,使用Numpy的运算速度会 ...
- Numpy数组基本操作(数组索引,数组切片以及数组的形状,数组的拼接与分裂)
一:数组的属性 每个数组都有它的属性,可分为:ndim(数组的维度),shape(数组每个维度的大小),size(数组的总大小),dtype(数组数据的类型) 二:数组索引 和python列表一样,N ...
- poj 1195:Mobile phones(二维树状数组,矩阵求和)
Mobile phones Time Limit: 5000MS Memory Limit: 65536K Total Submissions: 14489 Accepted: 6735 De ...
- Codeforces Round #198 (Div. 1) D. Iahub and Xors 二维树状数组*
D. Iahub and Xors Iahub does not like background stories, so he'll tell you exactly what this prob ...
随机推荐
- day84
在建表写字端时,id可以不写,orm会自动创建 表模型如果不写主键,orm会自动创建一个主键 from django.db import models # Create your models her ...
- 神经网络-SGD-2
接上节: 3.梯度(gradient): def numerical_gradient(f,x): h=1e-5 grad=np.zeros_like(x) for index_x in range( ...
- jackson使用问题:mapper.readValue()将JSON字符串转反序列化为对象失败或异常
问题根源:转化目标实体类的属性要与被转JSON字符串总的字段 一 一对应!字符串里可以少字段,但绝对不能多字段. 先附上我这段出现了问题的源码: // 1.接收并转化相应的参数.需要在pom.xml中 ...
- 在python中定义二维数组
发表于 http://liamchzh.0fees.net/?p=234&i=1 一次偶然的机会,发现python中list非常有意思. 先看一段代码 [py]array = [0, 0, 0 ...
- python设计模式第六天【原型模式】
1.定义 使用原型模式复制的对象与原来对象具有一样的结构和数据,有浅克隆和深克隆 2.应用场景 (1)希望复制原来对象的结构和数据胆步影响原来对象 3.代码实现 #!/usr/bin/env pyth ...
- 一、Dev单元格
二.获取表格数据 int selectRow = gridView1.GetSelectedRows()[0]; string id = this.gridView1.GetRowCellValue( ...
- 创建iview框架的项目
http://www.cnblogs.com/jf-67/p/8479176.html 在使用‘vue init webpack my-project’创建项目时,出现了错误 npm ERR! cod ...
- 一条命令停止所有lxc容器,删除所有lxc容器
for i in $(virsh -c lxc:/// list | grep -v 'Id' | awk '{print $2}');do virsh -c lxc:/// destroy ${i} ...
- 【XSY2718】gift 分数规划 网络流
题目描述 有\(n\)个物品,买第\(i\)个物品要花费\(a_i\)元.还有\(m\)对关系:同时买\(p_i,q_i\)两个物品会获得\(b_i\)点收益. 设收益为\(B\),花费为\(A\), ...
- bzoj2212[Poi2011]Tree Rotations [线段树合并]
题面 bzoj ans = 两子树ans + min(左子在前逆序对数, 右子在前逆序对数) 线段树合并 #include <cstdio> #include <cstdlib> ...