NumPy(Numerical Python)是一个python库,提供多维数组对象及其派生对象,以及用于数组快速操作的各种API。它运行速度快,用于数值计算,是python中科学计算的基础包。
D:\python39\Scripts>pip install numpy
ndarray(N-dimensional array)是NumPy的核心对象,属于一个Python类。
ndarray是NumPy的N维数组对象,是一个快速灵活的大数据集容器。
ndarray是一个具有矢量算术运算和复杂广播能力的快速且节省空间的多维数组。
一维列表中每个元素是单个数字或元素。
二维列表中每个元素是一个一维的列表。
通过array()创建ndarray数组对象。
import numpy as np
np.array(object, dtype=None, *, copy=True, order='K', subok=False, ndmin=0,like=None)
导入numpy包,调用array()方法按照指定入参将object转换为ndarray多维数组。
import numpy as np:取别名,是因为numpy内的一些名字与python的内置函数重名(比如,min和max)。
NO | 参数 | 必选 | 描述 |
---|---|---|---|
1 | object | 是 | array_like(类数组),表示要新建数组的对象。包括四种类型:数组、公开数组接口的任何对象、一个带有__array__()方法并且返回数组的对象、任何序列。 |
2 | dtype | 否 | data-type(数据类型),表示数组元素的类型。如果没有给出,numpy将类型确定为保持序列中的对象所需的最小类型。此参数只能用于“upcast”数组。对于向下转换,请使用.astype(t)方法。 |
3 | * | NA | 表示keyword-only参数,即后面的入参必须按关键字参数进行传送。,不能收集多余的位置参数。参考《python的keyword-only参数及解包》 |
4 | copy | 否 | bool类型,表示是否复制对象。默认为True,复制对象。若为False,则,只有当__array__返回副本,obj是嵌套序列,或者需要副本来满足任何其他要求(dtype,顺序等)时,才会进行复制。 |
5 | order | 否 | 值为{‘K’,‘A’,‘C’,‘F’}其中的一种,指定阵列的内存布局,控制元素在内存中的存储顺序。nump生成ndarray时,输入元素的实际位置,由order参数决定元素的实际存储位置。C:按行读取,F:按列读取,K:按内存读取,A:按行或列读取。默认为K。 |
6 | subok | 否 | bool类型,指定生成的ndarray数组的类型,默认为False。 True,使用object的内部数据类型; False,使用数组的数据类型。 |
7 | ndmin | 否 | int类型,指定生成的ndarray数组应具有的最小维度数。将根据需要对其形状进行预处理,以满足此要求。 |
8 | like | 否 | array_like类型,创建非NumPy数组的数组。创建一个与like入参兼容的数组对象。 |
创建并返回一个满足入参要求的ndarray数组。
入参object可以为元组、列表、range对象、ndarray对象、带有__array__()方法且返回ndarray的对象、单个数字、单个字符串等。
>>> import numpy as np
# object 为元组(序列)
>>> nda1=np.array((1,2,3))
>>> nda1
array([1, 2, 3])
>>> print(nda1)
[1 2 3]
# object 为列表(序列)
>>> nda2=np.array([4,5,6])
>>> nda2
array([4, 5, 6])
>>> print(nda2)
[4 5 6]
# object 为数组
>>> nda3=np.array(nda1)
>>> nda3
array([1, 2, 3])
>>> print(nda3)
[1 2 3]
# object 带有__array__()方法并且返回ndarray数组的对象
>>> class TestArray:
def __array__(self):
return np.array((1,2,3))
>>> nda4=np.array(TestArray())
>>> nda4
array([1, 2, 3])
>>> print(nda4)
[1 2 3]
# object 为range对象
>>> nda5=np.array(range(5))
>>> nda5
array([0, 1, 2, 3, 4])
>>> print(nda5)
[0 1 2 3 4]
# object 为1个字符串
>>> nda6=np.array('tyxt.work')
>>> nda6
array('tyxt.work', dtype='<U9')
>>> print(nda6)
tyxt.work
# object 为1个数字
>>> nda7=np.array(9555)
>>> nda7
array(9555)
>>> print(nda7)
9555
>>> import numpy as np
# dtype 指定数组元素类型, complex为复数
>>> nda1=np.array([1,2],dtype=complex)
>>> nda1
array([1.+0.j, 2.+0.j])
>>> print(nda1)
[1.+0.j 2.+0.j]
# dtype 指定数组元素类型,
# f为float32单精度浮点数
# i4为int32有符号32位整数,小数部分被截断
>>> nda2=np.array([(1.2,3.5),(5,6.8)],dtype=[('a','<f'),('b','<i4')])
>>> nda2['a']
array([1.2, 5. ], dtype=float32)
>>> nda2['b']
array([3, 6])
>>> print(nda2)
[(1.2, 3) (5. , 6)]