02_ndarray的创建方式

ndarray的创建方式

  • np.array()
    将输入的列表、元组、数组等序列类型转换为ndaray对象
import numpy as np

# data1也可以是tuple类型
# data1可以进行嵌套
data = [[1,2,3], [4,5,6]]
arr1 = np.array(data)
arr1
>>> array([[1, 2, 3],
           [4, 5, 6]])
  • np.asarray()
    array() 和 asarray() 都可以将结构数据转化为 ndarray,但是主要区别就是当数据源是 ndarray 时,array 仍然会 copy 出一个副本,占用新的内存,但 asarray 不会
arr2 = np.asarray(arr1)
arr2
>>> array([[1, 2, 3],
           [4, 5, 6]])
  • np.zeros()
    根据指定形状创建一个全为 0 的 ndarray 对象
arr3 = np.zeros([3, 4])
arr3
>>> array([[0., 0., 0., 0.],
           [0., 0., 0., 0.],
           [0., 0., 0., 0.]])
  • np.zeros_like()
    传入一个数组作为参数,根据该数组的形状和 dtype 创建一个全 0 的 ndarray 对象
arr4 = np.zeros_like(data)
arr4
>>> array([[0, 0, 0],
           [0, 0, 0]])
  • np.ones()
    根据指定形状创建一个全为 1 的 ndarray 对象
arr5 = np.ones([2, 3])
arr5
>>> array([[1., 1., 1.],
           [1., 1., 1.]])
  • np.ones_like()
    传入一个数组作为参数,根据该数组的形状和 dtype 创建一个全 1 的 ndaray 对象
arr6 = np.ones_like(data)
arr6
>>> array([[1, 1, 1],
           [1, 1, 1]])
  • np.empty()
    根据指定形状创建 ndarray 对象,只分配内存但是不填充任何值
arr7 = np.empty([2, 2]) 
arr7
>>> array([[            nan,             nan],
           [3.50977942e+064, 2.19121974e-314]])
  • np.empty_like()
    同上
arr8 = np.empty_like(data)
arr8
>>> array([[4607182418800017408, 4607182418800017408, 4607182418800017408],
           [4607182418800017408, 4607182418800017408, 4607182418800017408]])
  • np.full()
    根据指定形状传建一个ndarray对象,并用fill_value的值进行填充
arr9 = np.full([2,3], fill_value=3)
arr9
>>> array([[3, 3, 3],
           [3, 3, 3]])
  • np.full_like()
    传入一个数组作为参数,根据该数组的形状创建一个 ndarray 对象,并用 fill_value 的值进行填充
arr10 = np.full_like(data, 8)
arr10
>>> array([[8, 8, 8],
           [8, 8, 8]])
  • np.eye()
    传入一个整数N,创建一个N * N的单位矩阵
"""
numpy.eye(N, M=None, k=0, dtype=<class‘float’>, order=’C’)
N: 行数
M:列数,默认等于N
k:对角线索引:0(默认)为主对角线,正值是指上对角线,负值是指到下对角线
order: {'C', 'F'}输出是否应存储在主要行(C样式)中或内存中的列主(Fortran样式)顺序
"""
arr12 = np.eye(5)
arr12
>>> array([[1., 0., 0., 0., 0.],
           [0., 1., 0., 0., 0.],
           [0., 0., 1., 0., 0.],
           [0., 0., 0., 1., 0.],
           [0., 0., 0., 0., 1.]])
  • np.identity()
    传入一个整数 N,创建一个 N * N 的单位矩阵
# numpy.identity(n, dtype=None)
arr11 = np.identity(5)
arr11
>>> array([[1., 0., 0., 0., 0.],
           [0., 1., 0., 0., 0.],
           [0., 0., 1., 0., 0.],
           [0., 0., 0., 1., 0.],
           [0., 0., 0., 0., 1.]])
  • np.random
    随机抽样创建
arr13 = np.random.randn(2, 3)
arr13
>>> array([[-1.39806737,  1.29424428,  0.43693913],
           [ 1.3599019 ,  1.43063895,  0.84105025]])
  • np.arange()
    在给定间隔内返回均匀间隔的值(一维数组)
"""
参数
start:开始位置,数字,可选,默认值为0
stop:结束位置,数字,
step:步长,数字,可选,默认为1。如果指定step则必须指定start
dtype:类型。不指定则自动推断
"""
arr14 = np.arange(start=0, stop=10, step=2)
arr14
>>> array([0, 2, 4, 6, 8])
  • np.linspace()
    返回指定间隔内的等距数字。
arr15 = np.linspace(0, 10, 5)
arr15
>>> array([ 0. ,  2.5,  5. ,  7.5, 10. ])
  • np.fromfunction()
    通过对每个座标执行函数来构造数组
def fun(x, y):
    return x * 10 + y

np.fromfunction(fun, (4, 5), dtype=np.int)
>>> array([[ 0,  1,  2,  3,  4],
           [10, 11, 12, 13, 14],
           [20, 21, 22, 23, 24],
           [30, 31, 32, 33, 34]])

def my_dot(a, b):
    return a * b

np.fromfunction(my_dot, (2, 3))
>>> array([[0., 0., 0.],
           [0., 1., 2.]])

np.fromfunction(lambda i,j:i+j,(2, 3))
>>> array([[0., 1., 2.],
           [1., 2., 3.]])
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章