Numpy是一个Python科学计算的基础模块,Numpy不但能够完成科学计算的任务,也能够被用作有效的多位数据容器,这使得Numpy可以无缝并快速的整合各种数据;
1、 Numpy对象ndarray
Numpy中定义的最重要的对象称为ndarray的N维数组类型,它描述相同类型的元素集合,可以使用基于零的索引访问集合中的项目;
Ndarray中的每个元素在内存中使用相同大小的块。
注:这里需要与列表进行区分,list中并没有限制数据的类型,list中可以同时包含有字符、列表、元组等,但Numpy中生成的ndarray对象是相同元素的集合;
2、 创建数组
Numpy有多种方法可用于创建数组,一下对各种方法进行列举:
array
创建数组使用array方法,array方法的参数如下:
array(p_object,dtype = None, copy = True,order = ‘K’, subok = False, ndmin = 0)
相关参数的功能如下:
p_object :传入的数组对象,可以是list、tuple等
import numpy as np
"""创建数组"""
print("""创建数组""")
arr1 = np.array([1,2,3,4,5,6])
arr2 = np.array((1,2,3,4,5,6))
arr3 = np.array([1,2,3,4,5,6,'a'])
# arr4 =np.array([1,2,3,4,5,6,(1,2,3,4,5)]) 不支持此种方式创建数组
# arr5 =np.array((1,2,3,4,5,6,(1,2,3,4,5))) 不支持此种方式创建数组
arr4 =np.array([[1,2,3,4,5,6],(1,2,3,4,5)])
arr5 =np.array(((1,2,3,4,5,6),(1,2,3,4,5)))
print(arr1)
print(arr2)
print(arr3)
print(arr4)
print(arr5)
dtype:生成的数组的数据类型,选输
import numpy as np
"""创建数组"""
print("""创建数组""")
arr1 =np.array([1,2,3,4,5,6],dtype=np.int64)
arr2 =np.array((1,2,3,4,5,6),dtype=np.float32)
arr3 =np.array([1,2,3,4,5,6,'a'],dtype=np.str)
print(arr1)
print(arr2)
print(arr3)
copy:对象是否被复制,默认为True,选输#经测试,为False时,暂时没明白有什么区别
import numpy as np
"""创建数组"""
print("""创建数组""")
arr1 =np.array([[1,2,3,4,5,6],[1,2,3,4,5,6]],copy= False)
arr2 = arr1.copy()
print(arr1)
print(arr2)
arr1 =np.array([[1,2,3,4,5,6],[1,2,3,4,5,6]])
arr2 = arr1.copy()
print(arr1)
print(arr2)
order:一共有4个值,分别为K – 不改变输入数据的排序方式;A - 不改变输入数据的排序方式;F – 按列;C – 按行;
subok:返回的数组被强制为基类数组,如果为True,则会返回子类数组;
ndmin:指定返回数组的最小维数
empty
使用empty创建数组:
import numpy as np
"""创建数组"""
print("""创建数组""")
arr1 = np.empty((2,3))
print(arr1)
这里生成的数组中的数据是随机生成的;
zeros
使用zeros创建数组
import numpy as np
"""创建数组"""
print("""创建数组""")
arr1 = np.zeros((2,3))
print(arr1)
ones
使用ones创建数组:
import numpy as np
"""创建数组"""
print("""创建数组""")
arr1 = np.ones((2,3),dtype=int)
print(arr1)
arange
使用arange创建,arange有四个参数,arange(start=None, stop=None, step=None, dtype=None):
Start指定了起始位置,stop指定了结束位置(不包含该值),step指定步长,默认为1;dtype指定数据类型;
import numpy as np
"""创建数组"""
print("""创建数组""")
arr1 = np.arange(0,10).reshape((2,5))
print(arr1)
asarray
使用asarray创建数组
import numpy as np
"""创建数组"""
print("""创建数组""")
arr1 = np.asarray([1,2,3])
print(arr1)
frombuffer
使用frombuffer创建数组
import numpy as np
"""创建数组"""
print("""创建数组""")
s = b'hello world'
arr1 = np.frombuffer(s, dtype='S1', count=5, offset=6)
print(arr1)
fromiter
使用fromiter创建数组
import numpy as np
"""创建数组"""
print("""创建数组""")
iterable = (x*x for x in range(5))
arr1 = np.fromiter(iterable,float)
linespace
使用linespace创建数组,linespace的参数为linspace(start, stop, num=50, endpoint=True, retstep=False,dtype=None)
Start和stop:指定了起始和结束位置
num:指定了数量
endpoint:指定是否包含结束位置的值,默认包含;
retstep:为True时,返回数组以及数组之间的步长;
import numpy as np
"""创建数组"""
print("""创建数组""")
arr1 = np.linspace(0,9,10)
print(arr1)
logspace
使用logspace创建数组
参数如下:
logspace(start, stop, num=50,endpoint=True, base=10.0, dtype=None)
和linespace基本类似,其中base指定了以10为底;
import numpy as np
"""创建数组"""
print("""创建数组""")
arr1 = np.logspace(1,2,2,base=2)
print(arr1)
3、 ndarray的数据类型dtype
numpy的数据类型有多种,总结下来,分为以下几类,布尔型bool_,整形int,int型分8,16,32,64位的以及有符号和无符号的,浮点型数据float,float型分8、16、32、64位;复数型complex,complex分64位和128位;