生成相同元素值数组的方法如下:
通过形状shape(行数,列数)的指定,和带类型参数dtype的方法。
如何生成与现有数组相同(指的是形状shape,类型dtype相同)的数组。
接下来,对各个方法进行介绍。
使用numpy.zeros()函数可以生成一个ndarray数组,其中所有元素值均为0。
将要生成的数组的形状作为参数传递。(参数为标量时为一维数组,元组时为多维数组)。
import numpy as np
print(np.zeros(3))
# [ 0. 0. 0.]
print(np.zeros((2, 3)))
# [[ 0. 0. 0.]
# [ 0. 0. 0.]]
默认的类型(dtype)是float64。使用参数dtype可以对类型进行指定。
print(np.zeros(3).dtype)
# float64
print(np.zeros(3, dtype=np.int))
# [0 0 0]
print(np.zeros(3, dtype=np.int).dtype)
# int64
使用numpy.ones()函数可以生成一个ndarray数组,其中所有元素值均为1。使用方法与numpy.zeros()相同。将要生成的数组的形状左右参数传递。
print(np.ones(3))
# [ 1. 1. 1.]
print(np.ones((2, 3)))
# [[ 1. 1. 1.]
# [ 1. 1. 1.]]
默认的类型(dtype)是float64。使用参数dtype可以对类型进行指定。
print(np.ones(3).dtype)
# float64
print(np.ones(3, dtype=np.int))
# [1 1 1]
print(np.ones(3, dtype=np.int).dtype)
# int64
使用numpy.full()函数可以生成一个ndarray数组,其中所有元素值可以为任意值。
将要生成数组的形状作为第一参数传递,并将任意值作为第二个参数(fill_value)进行传递。
print(np.full(3, 100))
# [100 100 100]
print(np.full(3, np.pi))
# [ 3.14159265 3.14159265 3.14159265]
print(np.full((2, 3), 100))
# [[100 100 100]
# [100 100 100]]
print(np.full((2, 3), np.pi))
# [[ 3.14159265 3.14159265 3.14159265]
# [ 3.14159265 3.14159265 3.14159265]]
值的类型可以根据第二个参数(fill_value)的值进行指定。
比如100为int64,100.0为float64。
print(np.full(3, 100).dtype)
# int64
print(np.full(3, 100.0).dtype)
# float64
print(np.full(3, np.pi).dtype)
# float64
当然也可以使用参数dtype进行类型指定,并且还可以进行类型的强制转换。
print(np.full(3, 100, dtype=float))
# [ 100. 100. 100.]
print(np.full(3, np.pi, dtype=int))
# [3 3 3]
先生成2个原始ndarray数组,一个类型为int,另外一个类型为float。
import numpy as np
a_int = np.arange(6).reshape((2,3))
print(a_int)
# [[0 1 2]
# [3 4 5]]
a_float = np.arange(6).reshape((2,3)) / 10
print(a_float)
# [[ 0. 0.1 0.2]
# [ 0.3 0.4 0.5]]
要生成全为0的数组时,可以使用numpy.zeros_like(),第一参数为原始数组。
新生成数组的类型和原始数组相同。
print(np.zeros_like(a_int))
# [[0 0 0]
# [0 0 0]]
print(np.zeros_like(a_float))
# [[ 0. 0. 0.]
# [ 0. 0. 0.]]
也可以使用参数dtype进行类型的重新指定。
print(np.zeros_like(a_int, dtype=np.float))
# [[ 0. 0. 0.]
# [ 0. 0. 0.]]
要生成全为1的数组时,可以使用numpy.ones_like()函数。使用方法与numpy.zeros_like()相同。第一个参数为原始数组。
新生成数组的类型和原始数组相同。
print(np.ones_like(a_int))
# [[1 1 1]
# [1 1 1]]
print(np.ones_like(a_float))
# [[ 1. 1. 1.]
# [ 1. 1. 1.]]
也可以使用参数dtype进行类型的重新指定。
print(np.ones_like(a_int, dtype=np.float))
# [[ 1. 1. 1.]
# [ 1. 1. 1.]]
生成一个ndarray数组,其中元素的值可以为任意值。
将要生成数组的形状作为第一参数传递,并将任意值作为第二个参数(fill_value)进行传递。
新生成数组的类型和原始数组相同。
print(np.full_like(a_int, 100))
# [[100 100 100]
# [100 100 100]]
print(np.full_like(a_float, 100))
# [[ 100. 100. 100.]
# [ 100. 100. 100.]]
值的类型可以进行强制转换。
print(np.full_like(a_int, 0.123))
# [[0 0 0]
# [0 0 0]]
print(np.full_like(a_float, 0.123))
# [[ 0.123 0.123 0.123]
# [ 0.123 0.123 0.123]]
也可以使用参数dtype进行类型的重新指定。
print(np.full_like(a_int, 0.123, dtype=np.float))
# [[ 0.123 0.123 0.123]
# [ 0.123 0.123 0.123]]