NumPy系统是Python的一种开源的数值计算扩展。这种工具可用来存储和处理大型矩阵,比Python自身的嵌套列表(nested list structure)结构要高效的多(该结构也可以用来表示矩阵(matrix))。
注意:numpy是使用C写的
创建数组的方法:
1.array
import numpy as np
#arr1 = np.array([1,2,3])
print(arr1)#[1 2 3]
2.arange()函数创建一维数组
#格式:arange(起,止,步长)
#注意:[start, stop)
a5 = np.arange(0,1,0.1)
print(a5)#[ 0. 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9]
3.使用linspace函数
#注意:[`start`, `stop`]
a6 = np.linspace(1,10,5)
#括号里的第三个参数是生成几个数
print(a6)#[ 1. 3.25 5.5 7.75 10. ]
4.logspace()–等比数列
#生成10^1-10^3之间的3个等比数列
a7 = np.logspace(1,3,3)
print(a7)#[ 10. 100. 1000.]
#生成2^0-2^10,10个数
a8 = np.logspace(0,9,10,base=2)
print(a8)#[ 1. 2. 4. 8. 16. 32. 64. 128. 256.512.]
5.zeros生成零矩阵
a9 = np.zeros((2,3))
print(a9)
'''
a9 [[ 0. 0. 0.]
[ 0. 0. 0.]]
'''
a10 = np.ones((2,3))
print(a10)
'''
a10 [[ 1. 1. 1.]
[ 1. 1. 1.]]
'''
6.empty该函数创建了一个内容随机并且依赖内存状态的数组。
a11 = np.empty((2,3))
print('a11',a11)
a11 [[ 1. 1. 1.]
[ 1. 1. 1.]]
7.eys生成N阶矩阵,对角线元素为1
a12 = np.eye(3)
print('a12',a12)
'''
a12 [[ 1. 0. 0.]
[ 0. 1. 0.]
[ 0. 0. 1.]]
'''
8.diag对角线矩阵
a13 = np.diag([1,2,3,4])
print('a13',a13)
'''
a13 [[1 0 0 0]
[0 2 0 0]
[0 0 3 0]
[0 0 0 4]]
'''
#轴:数组的维度英文表示(axes)
9使用 ones 函数创建数组创建的元素都为 1
二维数组
arr2 = np.array([[1,2,3,4],[4,5,6,7,],[7,8,9,10]])
print(‘arr2的秩为’,arr2.ndim)#arr2的秩为 2
print(‘arr的维度为’,len(arr2.shape))#arr的维度为 2
#常用属性
1.ndim
#数组的秩:数组轴的个数称为秩
#arr1 = np.array([1,2,3])
#print(arr1.ndim)#结论:一维数组秩为1,二维数组秩为2。
2.shape
#数组的维度
#print(arr1.shape)#(3,),----返回的类型,只有一个元素的元组.
#此处数组的维度为1,此处3表示轴的长度
测试shape改变维度
arr3 = np.array([1,2,3,4,5,6])
print(arr3.shape,arr3)#(6,) [1 2 3 4 5 6]
arr3.shape = (2,3)
print(arr3)
‘’’
[[123]
[456]]
‘’’
3.size
#元素总和
print(arr3.size)#6
if len(arr3.shape) == 2:
print(‘元素总个数:’,arr3.shape[0]*arr3.shape[1])
elif len(arr3.shape) ==1:
print(‘元素总个数:’,arr3.shape[0])
4.dtype
#一个用来描述数组中元素类型的对象,可以通过创造或指定python的类型
#print(arr3.dtype)#int32
5.itemsize
#数组中每个元素的字节大小
print(arr3.itemsize)#4个字节比对上面的dtype的int32,32位占4个字节
6.data—数组的内存地址,是数组存储在内存的缓冲区
#内存地址
print(arr3.data)#<memory at 0x0000000003149C18>