Numpy:一个数字科学计算库
Numpy是在Python中最重的的数字计算库之一,Pandas, Matplotlib, Statmodels 和很多其他的科学库都要依赖NumPy
Numpy的主要贡献:
- 基于c的高效数字计算
- 高效的矢量操作
- 提供线性代数的API,里面很多矩阵操作
- 用c++,c或者FORTRAN写的Numpy提供CAPI
下面是在内存中的存储方式:
存储方式
上图numpy是连续的存储,而非指针式的存储,运行效率更高
数组创建
查看版本
import numpy as np
print(np.version.version) 1.18.1
Python 的几种格式转换为array
#list
a = [1,2,3,4,5,6,7]
arr = np.array(a)
print(arr)
print(a)
print(type(a))
print(type(arr)) [1 2 3 4 5 6 7][1, 2, 3, 4, 5, 6, 7]
<class 'list'>
<class 'numpy.ndarray'>
#python 中的元祖转换为array
a = (1,2,3,4,5,6,7)
arr = np.array(a)
print(arr)
print(a)
print(type(a))
print(type(arr)) [1 2 3 4 5 6 7]
(1, 2, 3, 4, 5, 6, 7)
<class 'tuple'>
<class 'numpy.ndarray'>
#使用元祖列表
b = ([1,2,3,4],[5,6,7,8])
arr = np.array(b)
print(arr)
print(b)
print(type(b))
print(type(arr)) [
[1 2 3 4]
[5 6 7 8]
]
([1, 2, 3, 4], [5, 6, 7, 8])
<class 'tuple'>
<class 'numpy.ndarray'>
#创建多维数组
arr = np.array([
[
[1,2,3],
[2,5,7],
[4,6,8]
],
[
[1,7,0],
[4,8,0],
[10,38,6]
]
])
print(arr)
print(arr.shape)
print(arr.itemsize)
print(arr.dtype) [
[[ 1 2 3]
[ 2 5 7]
[ 4 6 8]]
[[ 1 7 0]
[ 4 8 0]
[10 38 6]]
]
(2, 3, 3)
4
int32
创建特殊数组创建empty数组
#empty,ones,zero等数组创建
emp = np.empty((3,3),dtype= 'int16')
print(emp.dtype)
print(emp) int16 [[-11104 11808 338]
[ 0 0 0]
[ 0 0 1]]
创建全1数组
one = np.ones((3,3),dtype='int16')
print(one.dtype)
print(one.itemsize)
print(one) int162
[[1 1 1]
[1 1 1]
[1 1 1]]
全0数组zer = np.zeros((3,3))
#print(zer.dtpye)
print(zer) [[0. 0. 0.][0. 0. 0.]
[0. 0. 0.]]
使用其他方式创建数组
np.arange(9)
array([0, 1, 2, 3, 4, 5, 6, 7, 8])
使用1-9步长为3进行创建
np.arange(1,9,3)
array([1, 4, 7])
倒序排列
np.arange(9,1,-1)
array([9, 8, 7, 6, 5, 4, 3, 2])
等差数列 retstep = True 表示显示步长
arr = np.linspace(10,20,5,retstep=True)
print(arr)
(array([10. , 12.5, 15. , 17.5, 20. ]), 2.5)
#等比数列创建,基数为3,在1-2之间选公比,5个数
np.logspace(1,2,5,base=3)
array([3. , 3.94822204, 5.19615242, 6.83852117, 9. ])
使用随机数创建数组
arr = np.random.random(10)
print(arr)
[0.47506689 0.78784721 0.8098085 0.46357726 0.0277471 0.16222745
0.88297662 0.15955458 0.88360381 0.18963611]
arr = np.random.rand(10) #返回0-1的随机数
print(arr)
[0.71571962 0.18214698 0.66461297 0.98407043 0.46868968 0.62053681
0.07677895 0.86358837 0.42602798 0.54424612]
arr = np.random.randint(1,10,size=(3,3))#返回1-10的随机数
print(arr)
[[3 4 9]
[3 5 1]
[2 5 1]]
|