1.生成函数汇总
生成函数 | 作用 |
np.array( x) np.array( x, dtype) | 将输入数据转化为一个ndarray 将输入数据转化为一个类型为type的ndarray |
np.asarray( array ) | 将输入数据转化为一个新的(copy)ndarray |
np.ones( N ) np.ones( N, dtype) np.ones_like( ndarray ) | 生成一个N长度的一维全一ndarray 生成一个N长度类型是dtype的一维全一ndarray 生成一个形状与参数相同的全一ndarray |
np.zeros( N) np.zeros( N, dtype) np.zeros_like(ndarray) | 生成一个N长度的一维全零ndarray 生成一个N长度类型位dtype的一维全零ndarray 类似np.ones_like( ndarray ) |
np.empty( N ) np.empty( N, dtype) np.empty_like(ndarray) | 生成一个N长度的未初始化一维ndarray 生成一个N长度类型是dtype的未初始化一维ndarray 类似np.ones_like( ndarray ) |
np.eye( N ) np.identity( N ) | 创建一个N * N的单位矩阵(对角线为1,其余为0) |
np.arange( num) np.arange( begin, end) np.arange( begin, end, step) | 生成一个从0到num-1步数为1的一维ndarray 生成一个从begin到end-1步数为1的一维ndarray 生成一个从begin到end-step的步数为step的一维ndarray |
np.where(cond, ndarray1, ndarray2) | 根据条件cond,选取ndarray1或者ndarray2,返回一个新的ndarray |
np.in1d(ndarray, [x,y,...]) | 检查ndarray中的元素是否等于[x,y,...]中的一个,返回bool数组 |
2.函数使用示例
np.array
# -*- coding: utf-8 -*-
"""
@author: 蔚蓝的天空tom
Talk is cheap, show me the code
Aim:numpy的生成函数
"""
import numpy as np
lst = [1,2,3] #[1, 2, 3]
#将输入数据转化为一个ndarray
#1.1 np.array(x)
a = np.array(lst) #[1 2 3]
b = np.array(a)
print(id(a), id(b))#163171744 162972096
print(b is a) #False
b[0] = 9527 #不会改变a[0]
print(b) #[9527 2 3]
print(a) #[1 2 3]
#将输入数据转化为一个类型为type的ndarray
#1.2 np.array(x, dtype)
ret = np.array(lst, dtype=np.str) #['1' '2' '3']
ret = np.array(lst, dtype=np.float) #[ 1. 2. 3.]
ret = np.array(lst, dtype=np.bool) #[ True True True]
ret = np.array(lst, dtype=np.complex)#[ 1.+0.j 2.+0.j 3.+0.j]
#1.3 np.asarray(array) #将输入数据转化为一个新的(copy)ndarray
#将输入数据转化为一个类型为type的ndarray
ret = np.asarray(a) #[1 2 3]
print(id(a), id(ret)) #163171744 163171744
print(ret is a) #True
ret[0] = 9527 #会同时改变a[0]
print(ret) #[9527 2 3]
print(a) #[9527 2 3]
np.ones
#2.1 np.ones(N)
ret = np.ones(3) #[ 1. 1. 1.]
#2.2 np.ones(N,dtype)
ret = np.ones(3, dtype=np.int) #[1 1 1]
#2.3 np.ones_like(ndarray)
molds = np.array([[1,2,3], [4,5,6]])
ret = np.ones_like(molds) #[[1 1 1] [1 1 1]]
np.zeros
#3.1 np.zeros(N)
ret = np.zeros(3) #[ 0. 0. 0.]
#3.2 np.zeros(N, dtype)
ret = np.zeros(3, dtype=np.int) #[0 0 0]
#3.3 np.zeros_like(ndarray)
molds = np.array([[1,2,3], [4,5,6]])
ret = np.zeros_like(molds) #[[0 0 0] [0 0 0]]
np.empty
#4.1 np.empty(N)
#生成一个N长度的未初始化一维ndarray
ret = np.empty(3) #[ 2.12199579e-314 2.12199579e-314 2.12199579e-314]
#4.2 np.empty(N, dtype)
ret = np.empty(3, dtype=np.int) #[0 0 0]
ret = np.empty(3, dtype=np.float) #[ 0. 0. 0.]
ret = np.empty(3, dtype=np.bool) #[False False False]
ret = np.empty(3, dtype=np.complex) #[ 0.+0.j 0.+0.j 0.+0.j]
ret = np.empty(3, dtype=np.ndarray) #[None None None]
ret = np.empty(3, dtype=np.str) #['' '' '']
ret = np.empty(3, dtype=set) #[None None None]
ret = np.empty(3, dtype=list) #[None None None]
ret = np.empty(3, dtype=dict) #[None None None]
ret = np.empty(3, dtype=tuple) #[None None None]
#4.3 np.empty_like(ndarray)
molds = np.array([[1,2,3], [4,5,6]])
ret = np.empty_like(molds)#[[1 2 3] [4 5 6]]
np.eye
#创建一个N * N的单位矩阵(对角线为1,其余为0)
#5.1 np.eye(N)
ret = np.eye(3)
'''[[ 1. 0. 0.]
[ 0. 1. 0.]
[ 0. 0. 1.]]
'''
#创建一个N * N的单位矩阵(对角线为1,其余为0)
#5.2 np.identity(N)
ret = np.identity(3)
'''[[ 1. 0. 0.]
[ 0. 1. 0.]
[ 0. 0. 1.]]
'''
np.arange
#生成一个从0到N-1步数为1的一维ndarray
#6.1 np.arange(N)
ret = np.arange(3) #[0 1 2]
#生成一个从begin到end-1步数为1的一维ndarray
#6.2 np.arange(begin, end)
ret = np.arange(0, 3) #[0 1 2]
ret = np.arange(1, 3) #[1 2]
ret = np.arange(2, 3) #[2]
ret = np.arange(3, 3) #[]
#生成一个从begin到end-step的步数为step的一维ndarray
#6.3 np.arange(begin, end, step)
ret = np.arange(0, 9, 1) #[0 1 2 3 4 5 6 7 8]
ret = np.arange(0, 9, 2) #[0 2 4 6 8]
ret = np.arange(0, 9, 3) #[0 3 6]
ret = np.arange(0, 9, 4) #[0,4,8]
ret = np.arange(0, 9, 5) #[0 5]
ret = np.arange(0, 9, 6) #[0 6]
ret = np.arange(0, 9, 7) #[0 7]
ret = np.arange(0, 9, 8) #[0 8]
ret = np.arange(0, 9, 9) #[0]
ret = np.arange(0, 9, 10)#[0]
ret = np.arange(0, 9, 11)#[0]
np.where
#7 np.where(cond, ndarray1, ndarray2)
#当符合条件时是x,不符合是y,常用于根据一个数组产生另一个新的数组
#根据条件cond,选取ndarray1或者ndarray2,返回一个新的ndarray
a = np.array([1, 2, 3])
b = np.array([4, 5, 6])
ret = np.where(True, a, b) #[1 2 3]
ret = np.where(False, a, b)#[4 5 6]
ret = np.where([True, True, True], a, b) #[1 2 3]
ret = np.where([False, True, True], a, b) #[4 2 3]
ret = np.where([False, False, True], a, b) #[4 5 3]
ret = np.where([False, False, False], a, b)#[4 5 6]
ret = np.where([e>=1 for e in a], a, b) #[1 2 3]
ret = np.where([e>=2 for e in a], a, b) #[4 2 3]
ret = np.where([e>=3 for e in a], a, b) #[4 5 3]
ret = np.where([e>=4 for e in a], a, b) #[4 5 6]
np.in1d
#8 np.in1d(ndarray, [x,y,...])
#检查ndarray中的元素是否等于[x,y,...]中的一个,返回bool数组
#在序列B中寻找与序列A相同的值,并返回一逻辑值(True,False)或逻辑值构成的向量
tmp = np.array([[1,2,3], [4,5,6]])
ret = np.in1d(tmp, 1)#[ True False False False False False]
ret = np.in1d(tmp, 2)#[False True False False False False]
ret = np.in1d(tmp, 3)#[False False True False False False]
ret = np.in1d(tmp, 4)#[False False False True False False]
ret = np.in1d(tmp, 5)#[False False False False True False]
ret = np.in1d(tmp, 6)#[False False False False False True]
ret = np.in1d(tmp, 7)#[False False False False False False]
ret = np.in1d(tmp, 8)#[False False False False False False]
ret = np.in1d(tmp, [1,2]) #[ True True False False False False]
ret = np.in1d(tmp, [1,2,3])#[ True True True False False False]
ret = np.in1d(tmp, [1,5]) #[ True False False False True False]
ret = np.in1d(tmp, [1,9]) #[ True False False False False False]
(end)