目录
random.randint(), random.uniform()
numpy
NumPy是Numerical Python的简称,它是Python中的科学计算基本软件包,在使用时需要引用。
import numpy as np
虽然Python列表本身很强大,但是NumPy具有很多关键功能,从而比Python列表更具优势。
1. 在对大型数组执行操作时,NumPy的速度比Python列表的速度快了好几百倍。这是因为NumPy数组本身能节省内存,并且NumPy在执行算术、统计和线性代数运算时采用了优化算法。
2. NumPy可以表示向量和矩阵的多维数组数据结构。NumPy对矩阵运算进行了优化,使我们能够高效地执行线性代数运算,使其非常适合解决机器学习问题。
3. NumPy具有大量优化的内置数学函数,能够非常快速地进行各种复杂的数学计算,并且用到的代码很少(无需使用复杂的循环),使程序更容易读懂和理解。
4. Numpy handles more datatypes than Python.
typeDict
numpy.typeDict可以查看numpy支持的所有数据类型。
import numpy as np
print(np.typeDict)
{'?': <class 'numpy.bool_'>, 0: <class 'numpy.bool_'>, 'byte': <class 'numpy.int8'>, 'b': <class 'numpy.int8'>, 1: <class 'numpy.int8'>, 'ubyte': <class 'numpy.uint8'>, 'B': <class 'numpy.uint8'>, 2: <class 'numpy.uint8'>, 'short': <class 'numpy.int16'>, 'h': <class 'numpy.int16'>, 3: <class 'numpy.int16'>, 'ushort': <class 'numpy.uint16'>, 'H': <class 'numpy.uint16'>, 4: <class 'numpy.uint16'>, 'i': <class 'numpy.int32'>, 5: <class 'numpy.int32'>, 'uint': <class 'numpy.uint64'>, 'I': <class 'numpy.uint32'>, 6: <class 'numpy.uint32'>, 'intp': <class 'numpy.int64'>, 'p': <class 'numpy.int64'>, 7: <class 'numpy.int64'>, 'uintp': <class 'numpy.uint64'>, 'P': <class 'numpy.uint64'>, 8: <class 'numpy.uint64'>, 'long': <class 'numpy.int64'>, 'l': <class 'numpy.int64'>, 'L': <class 'numpy.uint64'>, 'longlong': <class 'numpy.longlong'>, 'q': <class 'numpy.longlong'>, 9: <class 'numpy.longlong'>, 'ulonglong': <class 'numpy.ulonglong'>, 'Q': <class 'numpy.ulonglong'>, 10: <class 'numpy.ulonglong'>, 'half': <class 'numpy.float16'>, 'e': <class 'numpy.float16'>, 23: <class 'numpy.float16'>, 'f': <class 'numpy.float32'>, 11: <class 'numpy.float32'>, 'double': <class 'numpy.float64'>, 'd': <class 'numpy.float64'>, 12: <class 'numpy.float64'>, 'longdouble': <class 'numpy.float128'>, 'g': <class 'numpy.float128'>, 13: <class 'numpy.float128'>, 'cfloat': <class 'numpy.complex128'>, 'F': <class 'numpy.complex64'>, 14: <class 'numpy.complex64'>, 'cdouble': <class 'numpy.complex128'>, 'D': <class 'numpy.complex128'>, 15: <class 'numpy.complex128'>, 'clongdouble': <class 'numpy.complex256'>, 'G': <class 'numpy.complex256'>, 16: <class 'numpy.complex256'>, 'O': <class 'numpy.object_'>, 17: <class 'numpy.object_'>, 'S': <class 'numpy.bytes_'>, 18: <class 'numpy.bytes_'>, 'unicode': <class 'numpy.str_'>, 'U': <class 'numpy.str_'>, 19: <class 'numpy.str_'>, 'void': <class 'numpy.void'>, 'V': <class 'numpy.void'>, 20: <class 'numpy.void'>, 'M': <class 'numpy.datetime64'>, 21: <class 'numpy.datetime64'>, 'm': <class 'numpy.timedelta64'>, 22: <class 'numpy.timedelta64'>, 'bool8': <class 'numpy.bool_'>, 'Bool': <class 'numpy.bool_'>, 'b1': <class 'numpy.bool_'>, 'int64': <class 'numpy.int64'>, 'Int64': <class 'numpy.int64'>, 'i8': <class 'numpy.int64'>, 'uint64': <class 'numpy.uint64'>, 'Uint64': <class 'numpy.uint64'>, 'u8': <class 'numpy.uint64'>, 'float16': <class 'numpy.float16'>, 'Float16': <class 'numpy.float16'>, 'f2': <class 'numpy.float16'>, 'float32': <class 'numpy.float32'>, 'Float32': <class 'numpy.float32'>, 'f4': <class 'numpy.float32'>, 'float64': <class 'numpy.float64'>, 'Float64': <class 'numpy.float64'>, 'f8': <class 'numpy.float64'>, 'float128': <class 'numpy.float128'>, 'Float128': <class 'numpy.float128'>, 'f16': <class 'numpy.float128'>, 'complex64': <class 'numpy.complex64'>, 'Complex32': <class 'numpy.complex64'>, 'c8': <class 'numpy.complex64'>, 'complex128': <class 'numpy.complex128'>, 'Complex64': <class 'numpy.complex128'>, 'c16': <class 'numpy.complex128'>, 'complex256': <class 'numpy.complex256'>, 'Complex128': <class 'numpy.complex256'>, 'c32': <class 'numpy.complex256'>, 'object0': <class 'numpy.object_'>, 'Object0': <class 'numpy.object_'>, 'bytes0': <class 'numpy.bytes_'>, 'Bytes0': <class 'numpy.bytes_'>, 'str0': <class 'numpy.str_'>, 'Str0': <class 'numpy.str_'>, 'void0': <class 'numpy.void'>, 'Void0': <class 'numpy.void'>, 'datetime64': <class 'numpy.datetime64'>, 'Datetime64': <class 'numpy.datetime64'>, 'M8': <class 'numpy.datetime64'>, 'timedelta64': <class 'numpy.timedelta64'>, 'Timedelta64': <class 'numpy.timedelta64'>, 'm8': <class 'numpy.timedelta64'>, 'UInt64': <class 'numpy.uint64'>, 'int32': <class 'numpy.int32'>, 'Int32': <class 'numpy.int32'>, 'i4': <class 'numpy.int32'>, 'uint32': <class 'numpy.uint32'>, 'UInt32': <class 'numpy.uint32'>, 'u4': <class 'numpy.uint32'>, 'int16': <class 'numpy.int16'>, 'Int16': <class 'numpy.int16'>, 'i2': <class 'numpy.int16'>, 'uint16': <class 'numpy.uint16'>, 'UInt16': <class 'numpy.uint16'>, 'u2': <class 'numpy.uint16'>, 'int8': <class 'numpy.int8'>, 'Int8': <class 'numpy.int8'>, 'i1': <class 'numpy.int8'>, 'uint8': <class 'numpy.uint8'>, 'UInt8': <class 'numpy.uint8'>, 'u1': <class 'numpy.uint8'>, 'complex_': <class 'numpy.complex128'>, 'int0': <class 'numpy.int64'>, 'uint0': <class 'numpy.uint64'>, 'single': <class 'numpy.float32'>, 'csingle': <class 'numpy.complex64'>, 'singlecomplex': <class 'numpy.complex64'>, 'float_': <class 'numpy.float64'>, 'intc': <class 'numpy.int32'>, 'uintc': <class 'numpy.uint32'>, 'int_': <class 'numpy.int64'>, 'longfloat': <class 'numpy.float128'>, 'clongfloat': <class 'numpy.complex256'>, 'longcomplex': <class 'numpy.complex256'>, 'bool_': <class 'numpy.bool_'>, 'bytes_': <class 'numpy.bytes_'>, 'string_': <class 'numpy.bytes_'>, 'unicode_': <class 'numpy.str_'>, 'object_': <class 'numpy.object_'>, 'str_': <class 'numpy.str_'>, 'int': <class 'numpy.int64'>, 'float': <class 'numpy.float64'>, 'complex': <class 'numpy.complex128'>, 'bool': <class 'numpy.bool_'>, 'object': <class 'numpy.object_'>, 'str': <class 'numpy.str_'>, 'bytes': <class 'numpy.bytes_'>, 'a': <class 'numpy.bytes_'>}
[Finished in 0.2s]
ndarray
numpy模块中最重要的特点就是N维数组对象(ndarray),数组是相同数据类型数据的集合,an array with n dimensions has a rank n.
ndarray属性dtype:数组元素数据类型。
ndarray属性ndim:可以返回数组的维度。
ndarray属性shape:可以返回当前数组的结构。
ndarray属性size:可以返回当前数组中元素的个数。
import numpy as np
arr = np.array([0,1,2,3,4])
print(arr)
print(type(arr), arr.dtype, arr.ndim, arr.shape, arr.size)
arr = np.array([[0,1,2,3,4],[5,6,7,8,9]])
print(arr)
print(type(arr), arr.dtype, arr.ndim, arr.shape, arr.size)
arr = np.array([ [[0,1,2],[1,2,3]], [[2,3,4],[3,4,5]], [[4,5,6],[5,6,7]], [[6,7,8],[7,8,9]] ])
print(arr)
print(type(arr), arr.dtype, arr.ndim, arr.shape, arr.size)
[0 1 2 3 4]
<class 'numpy.ndarray'> int64 1 (5,) 5
[[0 1 2 3 4]
[5 6 7 8 9]]
<class 'numpy.ndarray'> int64 2 (2, 5) 10
[[[0 1 2]
[1 2 3]]
[[2 3 4]
[3 4 5]]
[[4 5 6]
[5 6 7]]
[[6 7 8]
[7 8 9]]]
<class 'numpy.ndarray'> int64 3 (4, 2, 3) 24
[Finished in 0.2s]
在创建一个数组时,还可以指定元素数据类型,第二个参数加入dtype=numpy.XXX。
import numpy as np
arr = np.array([0,1,2,3,4])
print(arr)
print(type(arr), arr.dtype, arr.ndim, arr.shape, arr.size)
arr = np.array