参考链接: 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 数组相关推荐

  1. 转载Shell 数组学习

    转载Shell 数组学习 linux shell在编程方面比windows 批处理强大太多,无论是在循环.运算.已经数据类型方面都是不能比较的. 下面是个人在使用时候,对它在数组方面一些操作进行的总结 ...

  2. [转载] python数组的使用

    参考链接: Python中整数的最大可能值是多少? 原文地址为: python数组的使用 python数组的使用 python数组的使用 2010-07-28 17:17 1.Python的数组分三种 ...

  3. [转载]Java数组扩容算法及Java对它的应用

    原文链接:http://www.cnblogs.com/gw811/archive/2012/10/07/2714252.html Java数组扩容的原理 1)Java数组对象的大小是固定不变的,数组 ...

  4. python3 数组转字符串_Q:与python3交互中字符串转gbk的问题

    通过各类语言对json串的支持,可更便捷地解决该类问题. 具体可参考:FAQ:Q:在天软将结果转换成Json串返回到python中解决转码引起的效率低下问题 也可通过下列方式进行处理: 说明: 由于在 ...

  5. [转载] python3.6版本生成的python脚本如何打包为可独立执行的exe程序

    参考链接: Python命令行界面编程 如需转载,请注明出处:http://blog.csdn.net/jayloncheng/article/details/77567638 在此,我们使用pyin ...

  6. (转载) 数组a[]={3,5,2,4,1,8},要求从a中找出所有“和”等于10的子集

    背包问题.     不过就这道题目本身而言,由于集合a中只要6个元素,而不是成千上万,所以可以使用更直观的办法:     只要你能通过程序给出数组a中元素所组成的集合的所有的子集合(幂集),那么只需在 ...

  7. python3 数组大小_python3从零学习-5.1.8、高效的数值数组array

    此模块定义了一种对象类型,可以紧凑地表示基本类型值的数组:字符.整数.浮点数等. 数组属于序列类型,其行为与列表非常相似,不同之处在于其中存储的对象类型是受限的. 类型在对象创建时使用单个字符的类型码 ...

  8. java数组可扩展_[转载]Java数组扩容算法及Java对它的应用

    Java数组扩容的原理 1)Java数组对象的大小是固定不变的,数组对象是不可扩容的. 2)利用数组复制方法可以变通的实现数组扩容. 3)System.arraycopy()可以复制数组. 4)Arr ...

  9. python3 数组重复数字,[python3] 3_01 数组中重复的数字

    题目如下 题目.png 思路1 将输入数组排序,从头到尾扫描排序后的数组. 代码如下 # 03_01_FindDuplication.py class Solution(object): def du ...

最新文章

  1. android+自定义皮肤,android studio自定义更换皮肤详细图文教程
  2. Dubbo负载均衡原理
  3. OpenCV中图像水平拼接函数hconcat的使用
  4. 配置Tomcat的日志系统
  5. 蛋糕是叫胚子还是坯子_教你做巧克力淋面蛋糕,掌握这个配比,好看又好吃,10分钟做一个...
  6. 为什么说string是引用类型,但是又有值类型的特点呢?
  7. mysql base_MySQLbase
  8. DevOps使用教程 华为云(6)文档报告 项目进度 会议记录 迭代评审
  9. AI圣经!《深度学习》中文版隆重上市!美国亚马逊AI领域排名第一畅销书!
  10. TM1640操作源码--LED驱动IC
  11. 修改Android手机的分辨率和屏幕密度
  12. 关于Fragment + RecyclerView + Toolbar + BottomNavigationView的组合应用
  13. 禁用Chrome跟随系统的DPI缩放
  14. 把数组对象[{key1:val1},{key2:val2}] 的key val 分割成独立的数组
  15. Java新手学习指南(2020最新推荐版)
  16. 程序猿的困惑:这一切都是技术惹的祸?
  17. 按住iPhone按钮时如何阻止Siri打开
  18. 非常量引用的初始值必须为左值
  19. Power BI /Power BI Pro账户等基本概念介绍
  20. 存储过程根据业务场景自己摸索的写法

热门文章

  1. ROS开发时的服务器启动命令
  2. 看了就知道为什么别人C语言学习效率那么高了
  3. sorl6.0+jetty+mysql搭建solr服务
  4. java seek指针 换行符_Java网络编程探究|乐字节
  5. java int转bitmap_Java Base64位编码与String字符串的相互转换,Base64与Bitmap的相互转换实例代码...
  6. 计算机-p命令,OD(电脑命令)_百度百科
  7. java arraylist底层实现原理_ArrayList和LinkedList底层原理
  8. 存储器是计算机的记忆装置,存储器(Memory)
  9. phpexcel 获取工作簿名称_工作分享 | Excel快速汇总考勤
  10. java将date类型转成yyyymmdd_java中的Date怎么转换成YYYYMMDD形式?