ndarray (N-dimensional array object)和ufunc(universal function object)
ndarray是存储单一数据类型的多维数组,而ufunc则是能够对数组进行处理的函数。
1.基于List创建ndarray
import numpy as np # 导入numpy库,取别名为np
lst1 = [1,2,3,4,5,6] # 定义一个列表
a1=np.array(lst1) # 创建一维数组
print('a1=',a1) # 打印一维数组
lst2 = [[1,2,3],[4,5,6]] # 定义一个嵌套列表
a2 = np.array(lst2) # 创建二维数组
print('a2=\n',a2) # 打印二维数组
2.基于元组创建
import numpy as np # 导入numpy库,取别名为np
a=(1,2,3)
print(np.array(a))
[1 2 3]
3.基于迭代器创建
print(np.array(range(5)))
[0 1 2 3 4]
若想将数组元素转换数据类型,可以使用astype()函数。
. astype方法会创建一个新的数组,并不会改变原有数组的数据类型。
·将浮点数转换为整数时元素的小数部分被截断,而不是四舍五入。
·数值型的字符串可以通过astype方法将其转换为数值类型,但如果字符串中有非数值型字符进行转换就会报错。
通过函数创建特殊数组
1.ones(shape, dtype=float, order='C') 创建全一数组
a = np.ones(4)
print('a=\n', a)
a=
[1. 1. 1. 1.]
2.创建全0数组 zeros(shape,dtype=float,order = 'C')
a = np.zeros((3,5))
print('a=\n', a)
a=
[[0. 0. 0. 0. 0.]
[0. 0. 0. 0. 0.]
[0. 0. 0. 0. 0.]]
3.创建对角为1的矩阵 eye(N,M=None, k=0, dtype=float)
4.创建单位矩阵 identity(n, dtype=float)
5.创建对角为指定值的矩阵或获得二维数组的对角线 diag(v,k=0)
a1 = np.arange(10)
print('a1=', a1)
a2 = np.arange(0.,10, 2) #0.和10中较高级别的类型是float
print('a2=', a2)
a3 = np.arange(0, 10, 2, dtype='float')
print('a3=', a3)
a1= [0 1 2 3 4 5 6 7 8 9]
a2= [0. 2. 4. 6. 8.]
a3= [0. 2. 4. 6. 8.]
a1= np.linspace(1,10,5)
print('a1=', a1)
a2 = np.linspace(1,10, 5, retstep=True) # 返回值包含公差
print('a2=', a2)
a1= [ 1. 3.25 5.5 7.75 10. ]
a2= (array([ 1. , 3.25, 5.5 , 7.75, 10. ]), 2.25)
读取文件创建数组
默认采用空白作为分隔符,将文件中的内容读取进来,并生成矩阵,要求每行的内容数目必须一致,也就是说不能有缺失值。
skiprows=n:指跳过前n行
a = np. loadtxt("/URL.txt", skiprows=1, dtype=int)
print ( a)
comment='#︰如果行的开头为#就会跳过该行
delimiter:数据之间的分隔符。如使用逗号","
a = np. loadtxt("/URL.txt", comments='#',delimiter=',')
数组基本属性
import numpy as np
a = np.array( [ [0,1,2,3], [4,5,6,7], [8,9,10,11] ] )
print("a=\n",a)
print("a.ndim=", a.ndim)
print("a.shape=", a.shape)
print("a.size=", a.size)
print("a.dtype=", a.dtype)
print("a.itemsize=", a.itemsize)
print("a.nbytes=", a.nbytes)
a=
[[ 0 1 2 3]
[ 4 5 6 7]
[ 8 9 10 11]]
a.ndim= 2
a.shape= (3, 4)
a.size= 12
a.dtype= int32
a.itemsize= 4
a.nbytes= 48
随机数