越来越多的基于Python的科学和数学软件包使用NumPy数组; 虽然这些工具通常都支持Python的原生数组作为参数,但它们在处理之前会还是会将输入的数组转换为NumPy的数组,而且也通常输出为NumPy数组。换句话说,为了高效地使用当今科学/数学基于Python的工具(大部分的科学计算工具),你只知道如何使用Python的原生数组类型是不够的 - 还需要知道如何使用 NumPy 数组。


  • NumPy 数组在创建时具有固定的大小,与Python的原生数组对象(可以动态增长)不同。更改ndarray的大小将创建一个新数组并删除原来的数组。
  • NumPy 数组中的元素都需要具有相同的数据类型,因此在内存中的大小相同。 例外情况:Python的原生数组里包含了NumPy的对象的时候,这种情况下就允许不同大小元素的数组。
  • NumPy 数组有助于对大量数据进行高级数学和其他类型的操作。通常,这些操作的执行效率更高,比使用Python原生数组的代码更少。


举例

import numpy as np
y1=np.array([0, 1, 0, 1, 0, 1, 1, 0, 0, 1])
argx=np.squeeze(np.argwhere(y1==0), axis=1)
print(argx)
#输出结果:array([0, 2, 4, 7, 8])

如果上述代码中,第2行修改为:

y1=[0, 1, 0, 1, 0, 1, 1, 0, 0, 1]

则抛出异常:

ValueError: cannot select an axis to squeeze out which has size not equal to one

更多举例:求两个一维数组对应元素相乘

a =np.array( [1, 2, 3, 4])

b = np.array([5, 6, 7, 8])

c=a*b

则c的输出结果:

Out[16]: array([ 5, 12, 21, 32])

如果使用原生Python数组,则麻烦得多,需要使用循环语句实现。不仅如此,如果此两个数组个数是巨大值,则计算时间差异巨大!

小结

小面示例,仅是九牛之一毛。numpy数组用途大着呢......因此,选择使用Python进行大数据开发或者AI学习,对于numpy的数组了解得越多越受益!