numpy
1. 数组的创建
使用array
import numpy as np a = np.array([1,2,3]) b = np.array([[1,2,3], [4,5,6]])
使用arange
a = np.arange(3) b = np.arange(1, 10) c = np.arange(1, 10, 2)
指定数组的形状
a = np.arange(12).reshape(3,4)
b = a.shape
多维数组转换成一维数组
a = np.arange(24).reshape(2,3,4) b = a.ravel() c = a.flatten()
创建全为0,全为1的数组
a = np.zeros(3) b = np.ones(3) c = np.ones([3,4])
可以在创建时指定数组的类型
a = np.array([1,2,3], dtype=float)
类型转换
a = np.array([1,2,3])
a = a.astype(float)
2. 基本操作
一维的数组可以进行索引、切片和迭代操作的,就像 列表 和其他Python序列类型一样。
多维的数组每个轴可以有一个索引。这些索引以逗号分隔的元组给出
>>> b array([[ 0, 1, 2, 3], [10, 11, 12, 13], [20, 21, 22, 23], [30, 31, 32, 33], [40, 41, 42, 43]]) >>> b[2,3] 23 >>> b[0:5, 1] array([ 1, 11, 21, 31, 41]) >>> b[ : ,1] array([ 1, 11, 21, 31, 41]) >>> b[1:3, : ] array([[10, 11, 12, 13], [20, 21, 22, 23]])
对多维数组进行 迭代(Iterating) 是相对于第一个轴完成的
>>> for row in b: ... print(row) ... [0 1 2 3] [10 11 12 13] [20 21 22 23] [30 31 32 33] [40 41 42 43]
但是,如果想要对数组中的每个元素执行操作,可以使用flat属性,该属性是数组的所有元素的迭代器
>>> for element in b.flat: ... print(element) ... 0 1 2 3 10 11 12 13 20 21 22 23 30 31 32 33 40 41 42 43
3. 数组的拼接合并
初始化两个数组
>>> a array([0, 1, 2], [3, 4, 5], [6, 7, 8]) >>> b = a*2 >>> b array([ 0, 2, 4], [ 6, 8, 10], [12, 14, 16]) >>> c array([0, 1, 2]) >>> d = c*2 >>> d array([ 0, 2, 4])
水平组合
>>> np.hstack((a,b)) array([[ 0, 1, 2, 0, 2, 4], [ 3, 4, 5, 6, 8, 10], [ 6, 7, 8, 12, 14, 16]]) >>> np.concatenate((a,b), axis=1) array([[ 0, 1, 2, 0, 2, 4], [ 3, 4, 5, 6, 8, 10], [ 6, 7, 8, 12, 14, 16]]) >>> np.append(a,b, axis=1) array([[ 0, 1, 2, 0, 2, 4], [ 3, 4, 5, 6, 8, 10], [ 6, 7, 8, 12, 14, 16]])
垂直组合
>>> np.vstack((a,b)) array([[ 0, 1, 2], [ 3, 4, 5], [ 6, 7, 8], [ 0, 2, 4], [ 6, 8, 10], [12, 14, 16]]) >>> np.concatenate((a,b), axis=0) array([[ 0, 1, 2], [ 3, 4, 5], [ 6, 7, 8], [ 0, 2, 4], [ 6, 8, 10], [12, 14, 16]]) >>> np.append(a,b,axis=0) array([[ 0, 1, 2], [ 3, 4, 5], [ 6, 7, 8], [ 0, 2, 4], [ 6, 8, 10], [12, 14, 16]])

浙公网安备 33010602011771号