数组的创建
1.利用array函数创建数组
import numpy as np
a=np.array([2,4,6,8,1]) #单个列表创建一维数组
b=np.array(((1.1,2,3),(4,5,6),(7,8,9))) #嵌套元组创建二维数组
print('一维数组a:',a)
print('二维数组b:\n',b)
输出:
一维数组a: [2 4 6 8 1]
二维数组b:
[[1.1 2. 3. ]
[4. 5. 6. ]
[7. 8. 9. ]]
注意:在b中,输入的元素有浮点型和整型,但输出的元素都转为了浮点型
2.利用arange,empty,linspace等函数生成数组
import numpy as np
c=np.arange(4,dtype=float) #创建浮点型数组
d=np.arange(0,10,2,dtype=int) #创建整型数组
e=np.empty((2,3),int) #创建2×3的整型空矩阵;empty函数只分配数组所使用的的内存,返回值每次随机
f=np.linspace(-1,2,5) #创建数组:[-1.,-0.25,0.5,1.25,2.]
g=np.random.randint(0,3,(2,3)) #生成[0,3)上的2行3列的随机整数数组
print(c,'\n',d,'\n',e,'\n',f,'\n',g)
输出:
[0. 1. 2. 3.]
[0 2 4 6 8]
[[1784835872 544498533 1092645487]
[1229538131 1920234272 543649385]]
[-1. -0.25 0.5 1.25 2. ]
[[2 1 2]
[0 0 2]]
3.使用虚数单位“j”生成数组
import numpy as np
h=np.linspace(0,2,5) #生成数组:[0.,0.5,1.,1.5,2.]
i=np.mgrid[0:2:5j] #等价于np.linspace(0,2,5)
x,y=np.mgrid[0:2:4j,10:20:5j] #生成[0,2]×[10,20]上的4×5的二维数组
print('x={}\ny={}'.format(x,y))
输出:
x=[[0. 0. 0. 0. 0. ]
[0.66666667 0.66666667 0.66666667 0.66666667 0.66666667]
[1.33333333 1.33333333 1.33333333 1.33333333 1.33333333]
[2. 2. 2. 2. 2. ]]
y=[[10. 12.5 15. 17.5 20. ]
[10. 12.5 15. 17.5 20. ]
[10. 12.5 15. 17.5 20. ]
[10. 12.5 15. 17.5 20. ]]
数组的属性
1.生成[1,10]区间上3行5列的随机整数矩阵,并显示其各个属性
import numpy as np
j=np.random.randint(1,11,(3,5))#生成[1,10]区间上3行5列的随机整数数组
print("维数: ",j.ndim)
print("维度: ",j.shape)
print("元素总数: ",j.size)
print("类型: ",j.dtype)
print("每个元素字节数:",j.itemsize)
输出:
维数: 2
维度: (3, 5)
元素总数: 15
类型: int32
每个元素字节数: 4
2.生成数学上一维向量的三种模式
import numpy as np
k=np.array([1,2,3])
print("维度为: ",k.shape)
l=np.array([[1,2,3]])
print("维度为: ",l.shape)
m=np.array([[1],[2],[3]])
print("维度为: ",m.shape)
输出:
维度为: (3,)
维度为: (1, 3)
维度为: (3, 1)
数组元素的索引
1.一般索引
#数组索引示例
import numpy as np
m = np.array([2,4,8,20,16,30])
n = np.array(((1,2,3,4,5),(6,7,8,9,10),(10,9,1,2,3),(4,5,6,8,9.0)))
print(m[[2,3,5]]) #一维数组索引,输出: [ 8 20 30]
print(m[[-1,-2,-3]]) #一维数组索引,输出: [30 16 20]
print(n[1,2]) #输出第2行第3列元素: 8.0
print(n[2]) #输出第3行元素: [10. 9. 1. 2. 3.]
print(n[2,:]) #输出第3行元素: [10. 9. 1. 2. 3.]
print(n[:,1]) #输出第2列所有元素: [2. 7. 9. 5.]
print(n[[2,3],1:4]) #输出第3、4行,第2、3、4列的元素
print(n[1:3,1:3]) #输出第2、3行,第2、3列的元素
2.布尔索引
from numpy import array,nan,isnan
a=array([[1,nan,2],[4,nan,3]])
b=a[~isnan(a)] #提取a中非nan的数
print(b)
print('b中大于2的元素:',b[b>2])
输出:
[1. 2. 4. 3.]
b中大于2的元素: [4. 3.]
3.花式索引
花式索引的索引值是一个数组。对于使用一维整型数组作为索引, 如果被索引数据是一维数组,那么索引的结果就是对应位置的元素;如果被索引数据是二维数组,那么索引的结果就是对应下标的行。
对于二维被索引数据来说,索引值可以是二维数据,当索引值为两个维度相同的一维数组组成的二维数组时,以两个维度作为横纵坐标索引出单值后组合成新的一维数组。
from numpy import array
w=array([[1,2],[3,4],[5,6]])
print('前两行元素:\n',w[[0,1]])
print('x[0][0]和x[1][1]为:',w[[0,1],[0,1]])
print(' ')
#以下两种格式输出一样
print(w[[0,1]][:,[0,1]])
print(w[0:2,0:2])
前两行元素:
[[1 2]
[3 4]]
x[0][0]和x[1][1]为: [1 4]
[[1 2]
[3 4]]
[[1 2]
[3 4]]