Python库numpy之一
NumPy数组创建函数
一维数组创建函数
一维数组创建函数,例如numpy.linspace 和 numpy.arange,通常需要至少两个输入,start和stop。
numpy.arange
按固定的增量,创建数组。
词法:numpy.arange([start, ]stop, [step, ]dtype=None, *, device=None, like=None)
常见的arange的调用形式:
- arange(stop):在半开区间[0, stop],即包含start但不包含stop的区间内,生成值序列。
- arange(start, stop):在半开区间[start, stop)内,生成值序列。
- arange(start, stop, step) :在半开区间 [start, stop) 内,生成值,值之间的间距是step序列。
变量说明
-
start,该参数类型是整数或实数, 是可选的
数据序列区间开始。区间包括该值。默认起始值为 0。 -
stop,该参数类型是整数或实数
数据序列区间结束。该区间不包括该值。如果step不是整数,浮点舍入会影响out的长度。 -
step,该参数类型是整数或实数, 是可选的
数据序列值之间的间距。对于任何输出 out,这是两个相邻值之间的距离,out[i+1] - out[i]。默认步长为1。如果将step指定为位置参数,则还必须给出 start。 -
dtype,该参数类型是dtype, 是可选的
输出数组的类型。如果未给出 dtype,则从其他输入参数推断数据类型。 -
device,该参数类型是字符串, 是可选的
该参数表示放置创建的数组的设备。默认值:无。仅适用于 Array-API 互操作性,因此彻底该参数,则必须为“cpu”。 -
like,该参数类型是类数组, 是可选的
允许创建非 NumPy 数组的引用对象。
如果该like参数支持 array_function 协议,则结果将由它定义。在这种情况下,给函数确保创建的数组与like参数兼容。
应用例子
import numpy as np
if __name__ == "__main__":
a1 = np.arange(5, dtype=float)
a2 = np.arange(5, dtype=int)
a3 = np.arange(1, 5, dtype=int)
a4 = np.arange(1, 5, dtype=float)
print("a1 type: {0}, size: {1}, values: {2}".format(type(a1), a1.size, a1))
print("a2 type: {0}, size: {1}, values: {2}".format(type(a2), a2.size, a2))
print("a3 type: {0}, size: {1}, values: {2}".format(type(a3), a3.size, a3))
print("a4 type: {0}, size: {1}, values: {2}".format(type(a4), a4.size, a4))
print("-*-*"*20)
arr1 = np.arange(0, 5, 0.5, dtype=float)
arr2 = np.arange(-3, 3, 1, dtype=int)
arr3 = np.arange(-1, 1, 0.4, dtype=int)
arr4 = np.arange(-1, 1, 0.4, dtype=float)
print("arr1 type: {0}, size: {1}, values: {2}".format(type(arr1), arr1.size, arr1))
print("arr2 type: {0}, size: {1}, values: {2}".format(type(arr2), arr2.size, arr2))
print("arr3 type: {0}, size: {1}, values: {2}".format(type(arr3), arr3.size, arr3))
print("arr4 type: {0}, size: {1}, values: {2}".format(type(arr4), arr4.size, arr4))
程序运行产生的屏幕显示
C:\>python numpy_1.py
a1 type: <class 'numpy.ndarray'>, size: 5, values: [0. 1. 2. 3. 4.]
a2 type: <class 'numpy.ndarray'>, size: 5, values: [0 1 2 3 4]
a3 type: <class 'numpy.ndarray'>, size: 4, values: [1 2 3 4]
a4 type: <class 'numpy.ndarray'>, size: 4, values: [1. 2. 3. 4.]
-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
arr1 type: <class 'numpy.ndarray'>, size: 10, values: [0. 0.5 1. 1.5 2. 2.5 3. 3.5 4. 4.5]
arr2 type: <class 'numpy.ndarray'>, size: 6, values: [-3 -2 -1 0 1 2]
arr3 type: <class 'numpy.ndarray'>, size: 5, values: [-1 0 1 2 3]
arr4 type: <class 'numpy.ndarray'>, size: 5, values: [-1. -0.6 -0.2 0.2 0.6]
numpy.linspace
numpy.linspace返回在给定间隔内,均匀间隔的值。
词法:numpy.linspace(start, stop, num=50, endpoint=True, retstep=False, dtype=None, axis=0, *, device=None)
-
start,该参数类型是类数组
序列的起始值。 -
stop,该参数类型是类数组
如果endpoint不是False,则stop是列的结束值。
在endpoint不是False的情况下,序列不包括最后一个num + 1样本。当endpoint为 False 时,步长会发生变化。 -
num,该参数类型是int, 是可选的
要生成的样本数。默认值为 50。必须为非负数。 -
endpoint,该参数类型是bool, 是可选的
如果endpoint为True,则stop是最后一个样本。否则,stop不包括在内。默认为 True。 -
retstep,该参数类型是bool, 是可选的
如果retstep为True,则该函数返回两个值,即 (samples, step),其中 step 是样本之间的间距。 -
dtype,该参数类型是dtype, 是可选的
dtype指定输出数组的类型。如果未给出 dtype,则从参数start和stop推断数据类型。推断的 dtype 永远不会是整数;即使参数会生成整数数组,也会选择 float。 -
axis,该参数类型是int, 是可选的
结果中用于存储样本的轴。仅当参数start或stop是类数组时,才相关。默认情况下 (0),样本将沿着新轴插入。使用 -1 获得末端的轴。 -
device,该参数类型是字符串, 是可选的
该参数表示放置创建的数组的设备。默认值:无。仅适用于 Array-API 互操作性,因此彻底该参数,则必须为“cpu”。
应用例子
import numpy as np
if __name__ == "__main__":
a1 = np.linspace(2.0, 3.0, num=5)
a2 = np.linspace(2.0, 3.0, num=5, endpoint=False)
a3, step = np.linspace(2.0, 3.0, num=5, retstep=True)
print("a1 type: {0}, size: {1}, values: {2}".format(type(a1), a1.size, a1))
print("a2 type: {0}, size: {1}, values: {2}".format(type(a2), a2.size, a2))
print("a3 type: {0}, size: {1}, values: {2} step: {3}".format(type(a3), a3.size, a3, step))
start = np.linspace(1, 3, num = 3)
stop = np.linspace(50, 80, num = 3)
print("start type: {0}, size: {1}, values: {2}".format(type(start), start.size, start))
print("stop type: {0}, size: {1}, values: {2}".format(type(stop), stop.size, stop))
r1 = np.linspace(start, stop, num = 3)
r2 = np.linspace(start, stop, num = 5)
print("r1 type: {0}, size: {1}".format(type(r1), r1.size))
print(r1)
print("r2 type: {0}, size: {1}".format(type(r2), r2.size))
print(r2)
程序运行产生的屏幕显示
C:\>python numpy_2.py
a1 type: <class 'numpy.ndarray'>, size: 5, values: [2. 2.25 2.5 2.75 3. ]
a2 type: <class 'numpy.ndarray'>, size: 5, values: [2. 2.2 2.4 2.6 2.8]
a3 type: <class 'numpy.ndarray'>, size: 5, values: [2. 2.25 2.5 2.75 3. ] step: 0.25
start type: <class 'numpy.ndarray'>, size: 3, values: [1. 2. 3.]
stop type: <class 'numpy.ndarray'>, size: 3, values: [50. 65. 80.]
r1 type: <class 'numpy.ndarray'>, size: 9
[[ 1. 2. 3. ]
[25.5 33.5 41.5]
[50. 65. 80. ]]
r2 type: <class 'numpy.ndarray'>, size: 15
[[ 1. 2. 3. ]
[13.25 17.75 22.25]
[25.5 33.5 41.5 ]
[37.75 49.25 60.75]
[50. 65. 80. ]]