如何定义一个numpy.ndarray结构的数组?

array1 = [1,2,3]                     # 普通list
array1 = np.array(array1)  # 把array1转换成ndarray结构的数组
# 直接定义法
array2 = np.array([1,2,3])

ndarray结构方便对数组操作,比如数组的+-*/

array1 = array1 + 1  # 每个元素都加1
array1 + array2        # 两个数组元素对应相加
array1 * array2        # 两个数组元素对应相乘

注意:ndarray结构内元素类型必须一样,否则向下转换

array3 = [1,2,'3']
#  array3是list ,[1, 2, '3']
array3 = np.array(array3)
#  array3其他元素自动转换为字符类型,array(['1', '2', '3'], dtype='<U11')

ndarray的基本属性操作

array.dtype  # 查看数组里元素的数据类型
array.fill(1)  # 对数组进行填充,默认是字符类型

np.sum(array)    # 所有元素相加
array.sum()         # 所有元素相加
array.sum(axis = 0)  # 元素按列相加
array.sum(axis = 1)  # 元素按行相加

array.min()        # 取最小元素
array.argmin()  #  取最小元素的坐标

array.std()        # 标准差
array.var()       #  方差

array.clip(2, 4)  # 截断操作,小于2的变为2,大于4的变为4
array.round(2)  # 四舍五入,保留两位小数

array = np.random.rand(10)  # 0-1 随机取10个数 
array = np.random.rand(2,3) # 随机生成2行3列的数组,元素<1
np.random.randint(2,4,(2,3)) # 取2-4 之间的整数(不包含4),随机一个2行3列的矩阵
array = np.arange(0, 100,  20)  # 0-100 从0开始,间隔20取数, 不包含100
array = np.linspace(0, 100, 20)# 0-100  从0开始,等间隔取数,包含100

array = np.array([[1,0,6],
                 [1,7,0],
                 [2,3,1],
                 [2,4,0]])
mask = np.lexsort([array[:,2],  array[:,0]]) 
# 优先第一列升序,否则按第三列升序排列
# 后面的条件优先级高
# 返回的是一维的下标序列
# mask:  array([1, 0, 3, 2], dtype=int64)
array[mask]    # 打印此时的array
array([[1, 7, 0],
       [1, 0, 6],
       [2, 4, 0],
       [2, 3, 1]])
# 若想要按某一列降序,这一列 *-1
mask = np.lexsort([array[:,2],  -1*array[:,0]]) 
# 优先第一列降序序,否则按第三列升序排列

随机高斯初始化

mu , sigma = 0, 0.1   # 定义mu和sigma两个参数
array = np.random.normal(mu, sigma, 10)  # 随机的10个元素符合高斯分布

其它一些操作

np.random.shuffle(array) # 随机乱序数组


data = np.loadtxt('name.txt',delimiter=',', skiprows=1, encoding = 'utf-8')
# 读取txt文件内容
# data是一个数组
# delimiter = '' 指定分隔符
# skiprows = 1 去掉前几行
# encoding 解码方式

np.savetxt('name1.txt',  data,  fmt = '%d') 
# 保存到txt
# fmt = '' 指定保存的结构

Simple And Clear