23_Python列表和数组以及numpy.ndarray的区别和正确使用

23_Python列表和数组以及numpy.ndarray的区别和正确使用

Python在标准库中有一个内置类型的列表列表和一个数组数组。您也可以通过安装数值计算库NumPy使用多维数组numpy.ndarray。

将解释它们各自的区别和正确使用。

  • 列表 - list
  • 数组 - array
  • 多维数组 - numpy.ndarray

列表与数组和numpy.ndarray之间的区别

列表 - list

  • 内置式:无需导入即可使用
  • 可以存储不同类型:也可以通过列表表示多维数组
  • 尽管从狭义上讲它可能不同于数组,但列表通常足以进行简单的类似数组的处理。
l = ['apple', 100, 0.123]
print(l)
# ['apple', 100, 0.123]

l_2d = [[0, 1, 2], [3, 4, 5], [6, 7, 8]]
print(l_2d)
# [[0, 1, 2], [3, 4, 5], [6, 7, 8]]

提取元素时,请使用[]指定位置(index)。

print(l[1])
# 100

print(l_2d[1])
# [3, 4, 5]

print(l_2d[1][1])
# 4

可以指定多个切片[:]。

print(l[:2])
# ['apple', 100]

使用内置函数max(),min(),sum(),len()计算最大值,最小值,总计,平均值等的示例。 len()是一个返回元素数的函数。

l_num = [0, 10, 20, 30]

print(min(l_num))
# 0

print(max(l_num))
# 30

print(sum(l_num))
# 60

print(sum(l_num) / len(l_num))
# 15.0

for语句进行循环处理的示例。

l_str = ['apple', 'orange', 'banana']

for s in l_str:
    print(s)
# apple
# orange
# banana

数组 - array

  • 导入并使用标准库的数组模块
  • 只能存储相同类型
  • 仅一维数组
  • 可以使用与列表相同的方式来处理它,但对类型有限制。

与类型代码不匹配的类型的元素无法存储。

import array

arr_int = array.array('i', [0, 1, 2])
print(arr_int)
# array('i', [0, 1, 2])

arr_float = array.array('f', [0.0, 0.1, 0.2])
print(arr_float)
# array('f', [0.0, 0.10000000149011612, 0.20000000298023224])

# arr_int = array.array('i', [0, 0.1, 2])
# TypeError: integer argument expected, got float

与列表相同的处理是可能的。

print(arr_int[1])
# 1

print(sum(arr_int))
# 3

多维数组 - numpy.ndarray

  • 安装和使用Numpy
  • 只能存储相同类型
  • 可以表示多维数组
  • 丰富的数值计算方法和功能,可实现高速计算
import numpy as np

arr = np.array([0, 1, 2])
print(arr)
# [0 1 2]

arr_2d = np.array([[0, 1, 2], [3, 4, 5]])
print(arr_2d)
# [[0 1 2]
#  [3 4 5]]

对于多维数组,请指定以逗号分隔的位置(索引)。也可以使用切片。

print(arr[1])
# 1

print(arr_2d[1, 1])
# 4

print(arr_2d[0, 1:])
# [1 2]

可以对每个元素(例如,平方根)执行操作或查找矩阵乘积。 打印(np.sqrt(arr_2d))

print(np.sqrt(arr_2d))
# [[0.         1.         1.41421356]
#  [1.73205081 2.         2.23606798]]

arr_1 = np.array([[1, 2], [3, 4]])
arr_2 = np.array([[1, 2, 3], [4, 5, 6]])

print(np.dot(arr_1, arr_2))
# [[ 9 12 15]
#  [19 26 33]]
  • nd表示N维(N-dimensional)。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值