[转载] Python3 数组
参考链接: Python中的Array | 数组1(简介和功能)
一、list和array的区别
Python的数组通过Numpy包的array实现。 Python里二者最大的区别是,list可以存储不同类型的数据,而array只能存储相同类型的数据。
import numpy
#直接定义
a = [1,2,3,4,'5'] #列表list,可以混合类型
b = numpy.array([1,2,3,4,5]) #数字数组array
c = numpy.array([1,2,3,4,'5']) #字符数组array
#打印出来也有不同
print(a) #[1, 2, 3, 4]
print(b) #[1 2 3]
print(c) #['1' '2' '3' '4' '5']
#生成值为连续数字的对象
a1 = list(range(5))
b1 = numpy.arange(5)
#打印结果
print(a1) #[0, 1, 2, 3, 4]
print(b1) #[0 1 2 3 4]
二、创建数组的方法
(一) numpy.empty 创建未初始化的数组(非空,元素为随机值)
numpy.empty(shape, dtype = float, order = ‘C’) 参数列表分别为形状,数据类型,在计算机中的存储为行优先 ‘C’ 或者列优先 ‘F’。
import numpy
x = numpy.empty([3,2], dtype = int)
print(x)
[[0 0]
[0 0]
[0 0]]
(二) numpy.zeros 创建元素为 0 的数组
numpy.zeros(shape, dtype = float, order = ‘C’)
import numpy
y = numpy.zeros((2,2), dtype=int)
print(y)
[[0 0]
[0 0]]
(三) numpy.ones 创建元素为 1 的数组
import numpy
z = numpy.ones((2,2)) #这几个创建方式都需要注意第一个参数的形式
print(z)
[[1. 1.] [1. 1.]]
(四) numpy.asarray 根据已有的元组或者列表创建数组
numpy.asarray(a, dtype = None, order = None) 这是从列表转换为数组的例子
import numpy
x = [[1,2,3],[4,5,6]] #需要注意原列表的形式
y = [[1,2,3],[4,5]]
z = [[1,2,3],[4,5,'6']]
q = [[1,2,3],[4,5,6]]
a = numpy.asarray(x)
b = numpy.asarray(y)
c = numpy.asarray(z)
d = numpy.asarray(q,dtype=float)
print(a)
print(b)
print(c)
print(d)
[[1 2 3]
[4 5 6]]
[list([1, 2, 3]) list([4, 5])]
[['1' '2' '3']
['4' '5' '6']]
[[1. 2. 3.]
[4. 5. 6.]]
(五) numpy.frombuffer 流形式读入转换为数组
numpy.frombuffer(buffer, dtype = float, count = -1, offset = 0) 细节太多不讨论了,需要的时候再看
(六) numpy.fromiter 从可迭代对象创建数组,返回一维数组
numpy.fromiter(iterable, dtype, count=-1) count为读取的数据数量,默认为-1,读取所有数据
import numpy
x = range(5)
it = iter(x)
a = numpy.fromiter(x, dtype=float)
print(a)
[0. 1. 2. 3. 4.]
(七) numpy.arange 从数值范围创建数组
numpy.arange(start, stop, step, dtype)
import numpy
a = numpy.arange(5)
print(a)
[0 1 2 3 4]
(八) numpy.linspace 创建等差数列一维数组
numpy.linspace(start, stop, num=50, endpoint=True, retstep=False, dtype=None) num为数量,endpoint为真时stop被包含在数列中,retstep为真时显示间距
import numpy
a = numpy.linspace(0,100,11)
b = numpy.linspace(0,100,11,retstep =True, dtype=int)
print(a)
print(b)
[ 0. 10. 20. 30. 40. 50. 60. 70. 80. 90. 100.]
(array([ 0, 10, 20, 30, 40, 50, 60, 70, 80, 90, 100]), 10.0)
(九) numpy.logspace 创建等比数列一维数组
numpy.logspace(start, stop, num=50, endpoint=True, base=10.0, dtype=None) 序列的起始值为:base**start (base为底的start次方) 序列的终止值为:base ** stop (base为底的stop次方), 如果endpoint为true,该值包含于数列中 base为log的底数
import numpy
a = numpy.logspace(1, 4, 4, base=3, dtype = int)
b = numpy.logspace(1, 10, 10, base=2)
print(a)
print(b)
[ 3 9 27 81]
[ 2. 4. 8. 16. 32. 64. 128. 256. 512. 1024.]
三、array的操作
(一) reshape 整形
import numpy
a = numpy.arange(6)
b = a.reshape(3,2) #改变数组形状,参数是行数和列数,需要匹配原数组的元素数量否则报错
print(a)
print(b)
[0 1 2 3 4 5 6 7]
[[0 1]
[2 3]
[4 5]
[6 7]]
(二) flat 数组迭代器
import numpy
#一维数组可以直接for循环迭代
a = numpy.arange(6)
for x in a:
print(x)
b = numpy.arange(6).reshape(3,2) #二维数组
#flat迭代器
for x in b.flat:
print(x)
#多重for循环,跟迭代器二者等效
for x in b:
for y in x:
print(y)
(三) flatten 深拷贝,同copy()
ndarray.flatten(order=‘C’) order:‘C’ – 按行,‘F’ – 按列,‘A’ – 原顺序,‘K’ – 元素在内存中的出现顺序。
import numpy
a = numpy.arange(4)
b=a.copy()
c=a.flatten()
a[1] = 8
b[0] = 9
print(a)
print(b)
print(c)
[0 8 2 3]
[9 1 2 3]
[0 1 2 3]
(四) ravel 返回数组的视图,修改会影响原数组
numpy.ravel(a, order=‘C’) order:‘C’ – 按行,‘F’ – 按列,‘A’ – 原顺序,‘K’ – 元素在内存中的出现顺序。
import numpy
a = numpy.arange(8).reshape(2,4)
b = a.ravel()
c = a.ravel(order = 'F') # 就这个修改不会影响其他的
d = a.ravel(order = 'A')
e = a.ravel(order = 'K')
print(a)
print(b)
print(c)
print(d)
print(e)
[[0 1 2 3]
[4 5 6 7]]
[0 1 2 3 4 5 6 7]
[0 4 1 5 2 6 3 7]
[0 1 2 3 4 5 6 7]
[0 1 2 3 4 5 6 7]
注意,修改order='F’模式的时候不会影响其他模式的序列,没有深究为何,用的时候再找。
b[4] = 44
c[5] = 55
d[6] = 66
e[7] = 77
print(a)
print(b)
print(c)
print(d)
print(e)
[[ 0 1 2 3]
[44 5 66 77]]
[ 0 1 2 3 44 5 66 77]
[ 0 4 1 5 2 55 3 7]
[ 0 1 2 3 44 5 66 77]
[ 0 1 2 3 44 5 66 77]
(五) transpose 等同于T,翻转数组行和列
numpy.transpose(arr, axes) arr:要操作的数组 axes:整数列表,对应维度,通常所有维度都会对换。
import numpy
a = numpy.arange(6).reshape(2,3)
b = a.transpose()
c = a.T #注意写法
print(a)
print(b)
print(c)
[[0 1 2]
[3 4 5]]
[[0 3]
[1 4]
[2 5]]
[[0 3]
[1 4]
[2 5]]
(六) 后面暂时略,以后补完
[转载] Python3 数组相关推荐
- 转载Shell 数组学习
转载Shell 数组学习 linux shell在编程方面比windows 批处理强大太多,无论是在循环.运算.已经数据类型方面都是不能比较的. 下面是个人在使用时候,对它在数组方面一些操作进行的总结 ...
- [转载] python数组的使用
参考链接: Python中整数的最大可能值是多少? 原文地址为: python数组的使用 python数组的使用 python数组的使用 2010-07-28 17:17 1.Python的数组分三种 ...
- [转载]Java数组扩容算法及Java对它的应用
原文链接:http://www.cnblogs.com/gw811/archive/2012/10/07/2714252.html Java数组扩容的原理 1)Java数组对象的大小是固定不变的,数组 ...
- python3 数组转字符串_Q:与python3交互中字符串转gbk的问题
通过各类语言对json串的支持,可更便捷地解决该类问题. 具体可参考:FAQ:Q:在天软将结果转换成Json串返回到python中解决转码引起的效率低下问题 也可通过下列方式进行处理: 说明: 由于在 ...
- [转载] python3.6版本生成的python脚本如何打包为可独立执行的exe程序
参考链接: Python命令行界面编程 如需转载,请注明出处:http://blog.csdn.net/jayloncheng/article/details/77567638 在此,我们使用pyin ...
- (转载) 数组a[]={3,5,2,4,1,8},要求从a中找出所有“和”等于10的子集
背包问题. 不过就这道题目本身而言,由于集合a中只要6个元素,而不是成千上万,所以可以使用更直观的办法: 只要你能通过程序给出数组a中元素所组成的集合的所有的子集合(幂集),那么只需在 ...
- python3 数组大小_python3从零学习-5.1.8、高效的数值数组array
此模块定义了一种对象类型,可以紧凑地表示基本类型值的数组:字符.整数.浮点数等. 数组属于序列类型,其行为与列表非常相似,不同之处在于其中存储的对象类型是受限的. 类型在对象创建时使用单个字符的类型码 ...
- java数组可扩展_[转载]Java数组扩容算法及Java对它的应用
Java数组扩容的原理 1)Java数组对象的大小是固定不变的,数组对象是不可扩容的. 2)利用数组复制方法可以变通的实现数组扩容. 3)System.arraycopy()可以复制数组. 4)Arr ...
- python3 数组重复数字,[python3] 3_01 数组中重复的数字
题目如下 题目.png 思路1 将输入数组排序,从头到尾扫描排序后的数组. 代码如下 # 03_01_FindDuplication.py class Solution(object): def du ...
最新文章
- android+自定义皮肤,android studio自定义更换皮肤详细图文教程
- Dubbo负载均衡原理
- OpenCV中图像水平拼接函数hconcat的使用
- 配置Tomcat的日志系统
- 蛋糕是叫胚子还是坯子_教你做巧克力淋面蛋糕,掌握这个配比,好看又好吃,10分钟做一个...
- 为什么说string是引用类型,但是又有值类型的特点呢?
- mysql base_MySQLbase
- DevOps使用教程 华为云(6)文档报告 项目进度 会议记录 迭代评审
- AI圣经!《深度学习》中文版隆重上市!美国亚马逊AI领域排名第一畅销书!
- TM1640操作源码--LED驱动IC
- 修改Android手机的分辨率和屏幕密度
- 关于Fragment + RecyclerView + Toolbar + BottomNavigationView的组合应用
- 禁用Chrome跟随系统的DPI缩放
- 把数组对象[{key1:val1},{key2:val2}] 的key val 分割成独立的数组
- Java新手学习指南(2020最新推荐版)
- 程序猿的困惑:这一切都是技术惹的祸?
- 按住iPhone按钮时如何阻止Siri打开
- 非常量引用的初始值必须为左值
- Power BI /Power BI Pro账户等基本概念介绍
- 存储过程根据业务场景自己摸索的写法
热门文章
- ROS开发时的服务器启动命令
- 看了就知道为什么别人C语言学习效率那么高了
- sorl6.0+jetty+mysql搭建solr服务
- java seek指针 换行符_Java网络编程探究|乐字节
- java int转bitmap_Java Base64位编码与String字符串的相互转换,Base64与Bitmap的相互转换实例代码...
- 计算机-p命令,OD(电脑命令)_百度百科
- java arraylist底层实现原理_ArrayList和LinkedList底层原理
- 存储器是计算机的记忆装置,存储器(Memory)
- phpexcel 获取工作簿名称_工作分享 | Excel快速汇总考勤
- java将date类型转成yyyymmdd_java中的Date怎么转换成YYYYMMDD形式?