Python 中list中所有值加和_python 中 array 和 list 的区别

【小记】python 中 array 和 list 的区别

python中list 和array的区别

list和array的区别 --- python

python中list 和array的区别

List: 列表

python 中的 list 是 python 的内置数据类型,list 中的数据类型不必相同
在 list 中保存的是数据的存放的地址,即指针,并非数据。

array:数组

array() 是 numpy 包中的一个函数,array 里的元素都是同一类型

ndarray:

是一个多维的数组对象,具有矢量算术运算能力和复杂的广播能力,并具有执行速度快和节省空间的特点。

ndarray 的一个特点是同构:即其中所有元素的类型必须相同

进行一个简单的比较:

import 

NumPy 提供的 array() 函数可以将 Python 的任何序列类型转换为 ndarray 数组。

例如将一个列表转换成 ndarray 数组:

>>> 

python中 list 与数组array的互相转换:

  1. list转array:np.array(a)
  2. array 转list:a.tolist()

9aaed046260392ecff255b94b26b7e0b.png

769c6570f0e0df20f3055857ac019134.png

ndarray补充知识:NumPy Ndarray 对象

NumPy 最重要的一个特点是其 N 维数组对象 ndarray,它是一系列同类型数据的集合,以 0 下标为开始进行集合中元素的索引。

ndarray 对象是用于存放同类型元素的多维数组。

ndarray 中的每个元素在内存中都有相同存储大小的区域。

ndarray 内部由以下内容组成:

  • 一个指向数据(内存或内存映射文件中的一块数据)的指针。
  • 数据类型或 dtype,描述在数组中的固定大小值的格子。
  • 一个表示数组形状(shape)的元组,表示各维度大小的元组。
  • 一个跨度元组(stride),其中的整数指的是为了前进到当前维度下一个元素需要"跨过"的字节数。

ndarray 的内部结构:

4ce083e5aa04a8567eb122a348358c8d.png

跨度可以是负数,这样会使数组在内存中后向移动,切片中 obj[::-1]obj[:,::-1] 就是如此。

创建一个 ndarray 只需调用 NumPy 的 array 函数即可:

numpy

13aeed53970928d43417f06e0b7b6c00.png

例题:

import 

输出:

[1, 2, 3]

# 多于一个维度  

输出:

[[1, 2]
[3, 4]]

# 最小维度   

输出:

[[1, 2, 3, 4, 5]]

# dtype 参数   

输出结果如下:

[ 1.+0.j, 2.+0.j, 3.+0.j]

ndarray 对象由计算机内存的连续一维部分组成,并结合索引模式,将每个元素映射到内存块中的一个位置。内存块以行顺序(C样式)或列顺序(FORTRAN或MatLab风格,即前述的F样式)来保存元素。


ndarray.shape 输出一个元组

t2 = np.array([[1, 2, 3], [4, 5, 6]]) # 二维数组

print(t2.shape)     #输出元组(2, 3) 

print(x.shape[0]) # 2 只输出行数
print (x.shape[1]) # 3
print(len(t2))        #2 输出行数

print(len(t2[0]))    #3 输出列数


ndarray.size

输出数组元素的总个数,等于shape属性中元组元素的乘积。

ndarray.reshape数组变形

t3 = np.arange(12)
t4 = t3.reshape((3, 4))   # 改变形状,改成3行4列
print(t4)
'''
[[ 0  1  2  3]
 [ 4  5  6  7]
 [ 8  9 10 11]]

np.where(条件)

返回的是元组,每个元组中的元素是array数组. np.where()并不接受list类型的参数。
—— np.where()[0] 表示行的索引;
—— np.where()[1] 则表示列的索引;

>>> a = np.arange(27).reshape(3,3,3)
>>> a
array([[[ 0,  1,  2],
        [ 3,  4,  5],
        [ 6,  7,  8]],
 
       [[ 9, 10, 11],
        [12, 13, 14],
        [15, 16, 17]],
 
       [[18, 19, 20],
        [21, 22, 23],
        [24, 25, 26]]])
 
>>> np.where(a > 5)
(array([0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2]),
 array([2, 2, 2, 0, 0, 0, 1, 1, 1, 2, 2, 2, 0, 0, 0, 1, 1, 1, 2, 2, 2]),
 array([0, 1, 2, 0, 1, 2, 0, 1, 2, 0, 1, 2, 0, 1, 2, 0, 1, 2, 0, 1, 2]))
 
 
# 符合条件的元素为
       [ 6,  7,  8]],
 
      [[ 9, 10, 11],
       [12, 13, 14],
       [15, 16, 17]],
 
      [[18, 19, 20],
       [21, 22, 23],
       [24, 25, 26]]]

所以np.where会输出每个元素的对应的坐标,因为原数组有三维,所以tuple中有三个数组。

a30fea776870055adda598e043f36dc0.png
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值