第一篇 numpy
1.N维数组对象 :ndarray
在Python中既然有了列表类型,为啥还要整个数组对象(类型)?那是因为:
1.数组对象可以除去元素间运算所需要的循环,使得一维向量更像单个数据
2.设置数组对象可以提升计算的速度
3.数组对象采取相同的数据类型,有助于节省运算空间和存储空间
nsarray 是一个多维数组对象,由两部分组成:
1.实际的数据
2.描述这些数据的原数据(数据维度、数据类型等)
import numpy as np
a = np.array([[0,1,2,3,4],
[9,8,7,6,5]])
print(a.ndim)
print(a.shape)
print(a.size)
print(a.dtype)
print(a.itemsize)
#2
#(2, 5)
#10
#int32
#4
#创建数组
import numpy as np
x = np.array([0,1,2,3])
x1 = np.array((0,1,2,3))
x2 = np.array([[1,2],[3,4],[0.4,0.5]])
print(x)
print(x1)
print(x2)
注释:
[0 1 2 3]
[0 1 2 3]
[[ 1. 2. ]
[ 3. 4. ]
[ 0.4 0.5]]
ndarray 数组的变换
import numpy as np
a = np.ones((2,3,4),dtype=np.int32)
print(a)
b = a.reshape(3,8)
print(b)
#ndarray 数组向列表转化
print(a.tolist())
注意:
[[[1 1 1 1]
[1 1 1 1]
[1 1 1 1]]
[[1 1 1 1]
[1 1 1 1]
[1 1 1 1]]]
[[1 1 1 1 1 1 1 1]
[1 1 1 1 1 1 1 1]
[1 1 1 1 1 1 1 1]]
[[[1, 1, 1, 1], [1, 1, 1, 1], [1, 1, 1, 1]], [[1, 1, 1, 1], [1, 1, 1, 1], [1, 1, 1, 1]]]
ndarray数组的切片和索引
#数组的索引和切片
a = np.arange(24).reshape((2,3,4))
print(a)
[[[ 0 1 2 3]
[ 4 5 6 7]
[ 8 9 10 11]]
[[12 13 14 15]
[16 17 18 19]
[20 21 22 23]]]
print(a[1,2,3]) #23
print(a[-1,-2,-3]) #17
print(a[:,1,-3]) #[ 5 17]
print(a[:,1:3,:])
print(a[:,:,::2])
输出结果:
[[[ 4 5 6 7]
[ 8 9 10 11]]
[[16 17 18 19]
[20 21 22 23]]]
[[[ 0 2]
[ 4 6]
[ 8 10]]
[[12 14]
[16 18]
[20 22]]]