• [技术干货] python-NumPy算数函数
    1-Numpy数学函数NumPy 包含大量的各种数学运算的函数,包括三角函数,算术运算的函数,复数处理函数等。1.1-三角函数:NumPy 提供了标准的三角函数:sin()、cos() 和 tan()计算不同角度的正弦值:import numpy as npa = np.array([0, 5, 30, 50, 80])print('不同角度的正弦值:')# 通过乘 pi/180 转化为弧度print(np.sin(a * np.pi / 180))输出结果:[0.         0.08715574 0.5        0.76604444 0.98480775]计算数组中的角度的余弦值:import numpy as npa = np.array([0, 5, 30, 50, 80])print('数组中角度的余弦值:')print(np.cos(a * np.pi / 180))输出结果:[1.         0.9961947  0.8660254  0.64278761 0.17364818]计算数组中的角度的正切值:import numpy as npa = np.array([0, 5, 30, 50, 80])print('数组中角度的正切值:')print(np.tan(a * np.pi / 180))输出结果:[0.         0.08748866 0.57735027 1.19175359 5.67128182]1.2-舍入函数numpy.around() 函数返回指定数字的四舍五入值import numpy as npa = np.array([3.0, 4.51, 363, 1.2, 0.99])print('舍入前:')print(a)print('舍入后:')print(np.around(a))print(np.around(a, decimals=1))print(np.around(a, decimals=-1))输出结果:舍入前:[  3.     4.51 363.     1.2    0.99]舍入后:[  3.   5. 363.   1.   1.][  3.    4.5 363.    1.2   1. ][  0.   0. 360.   0.   0.]1.3-Numpu.floor()numpy.floor() 返回小于或者等于指定表达式的最大整数,即向下取整import numpy as npa = np.array([2.1, -0.5, 6.5, 1.5, 6])print('修改前:')print(a)print('修改后:')print(np.floor(a))输出结果:修改前:[ 2.1 -0.5  6.5  1.5  6. ]修改后:[ 2. -1.  6.  1.  6.]1.4-Numpy.ceil()Numpy.ceil() 返回大于或者等于指定表达式的最小整数,即向上取整import numpy as npa = np.array([2.1, -0.5, 6.5, 1.5, 6])print('修改前:')print(a)print('修改后:')print(np.ceil(a))输出结果:修改前:[ 2.1 -0.5  6.5  1.5  6. ]修改后:[ 3. -0.  7.  2.  6.]
  • [经验交流] Python-NumPy广播(Broadcast)
    Broadcast是 numpy 对不同形状(shape)的数组进行数值计算的方式, 对数组的算术运算通常在相应的元素上进行。如果两个数组 a 和 b 形状相同,即满足 a.shape == b.shape,那么 a*b 的结果就是 a 与 b 数组对应位相乘。这要求维数相同,且各维度的长度相同。import numpy as npa = np.array([1,2,3,4])b = np.array([10,20,30,40])c = a * bprint (c)输出结果[ 10  40  90 160]当运算中的 2 个数组的形状不同时,numpy 将自动触发广播机制。如:import numpy as np a = np.array([[ 0, 0, 0], [10,10,10], [20,20,20], [30,30,30]]) b = np.array([1,2,3])print(a + b)输出结果[[ 1  2  3] [11 12 13] [21 22 23] [31 32 33]]图片展示了数组 b 如何通过广播来与数组 a 兼容。4x3 的二维数组与长为 3 的一维数组相加,等效于把数组 b 在二维上重复 4 次再运算:import numpy as np a = np.array([[0, 0, 0],               [10, 10, 10],               [20, 20, 20],               [30, 30, 30]]) b = np.array([1, 2, 3]) bb = np.tile(b, (4, 1))  # 重复 b 的各个维度print(a + bb)输出结果 [[ 1  2  3] [11 12 13] [21 22 23] [31 32 33]] 广播的原则  广播的原则:如果两个数组的后缘维度(trailing dimension,即从末尾开始算起的维度)的轴长度相符,或其中的一方的长度为1,则认为它们是广播兼容的。广播会在缺失和(或)长度为1的维度上进行。  这句话乃是理解广播的核心。广播主要发生在两种情况,一种是两个数组的维数不相等,但是它们的后缘维度的轴长相符,另外一种是有一方的长度为1。
  • [问题求助] 【PyACL】函数ptr_to_numpy应用时传参的ptr应该如何传入?
    【功能模块】PyACL【操作步骤&问题现象】在调用ptr_to_numpy之前使用dvpp对单张jpg图片进行resize得到一个256*256的AclImage对象frame,现在想要将这个frame转换为numpy数组,参考开发者文档之后欲使用ptr_to_numpy函数实现该步骤,于是写了语句fr=acl.util.ptr_to_numpy(id(frame),(256,256,3),2)但是经过测试只要对该fr中的值进行赋值修改操作就会报“段错误(核心已转储)”,没有其他报错,查阅后怀疑是指针操作引起的错误,于是对fr进行打印调试,结果发现每次运行fr的结果都在变化,但是最初的输入图像是不变的,转换后的fr不应该变化,怀疑id(frame)传入的并不是文档中要求传入的数据首地址。那么ptr_to_numpy函数应该如何传入需要的数据首地址,或者说这个函数应该如何正确使用?
  • [执行问题] mindspore mindspore.numpy.tri()在CPU上无法运行
    【功能模块】mindspore.numpy.tri()函数示例代码在CPU上无法运行【操作步骤&问题现象】1、按照示例代码,出现  AttributeError: module 'mindspore.numpy' has no attribute 'tri' 错误。2、【截图信息】【日志信息】(可选,上传日志内容或者附件)
  • [技术干货] python-Numpy从数值范围创建数组
    NumPy在python里面是一个扩展的库运行速度非常快主要用于数组计算,一个强大的N维数组对象 ndarray,广播功能函数,整合C/C++/Fortran代码的工具,线性代数,傅里叶变换、随机数生成等功能。NumPy数据类型numpy支持很多数据类型比python内置还要多基本上能与C语言的数据类型对应上。numpy的arange函数该函数用于创建等差数组,使用频率很高,跟python内置函数range相似,numpy.arange(start起始值, stop终止值, step步长, dtype返回ndarray的数据类型,如果没有提供,则会使用输入数据的类型。)首先先引入numpy 然后import numpy as npa = np.arange(5)print (a)输出结果 : [0 1 2 3 4]import numpy as npa = np.arange(1,10,2) 就是从0开始到10,每隔2生成一个数,print (a)输出结果:[1,3,5,7,9]numpy的linspace函数函数用于创建一个一维数组,数组是一个等差数列构成的np.linspace(start序列的起始值, stop序列的终止值,如果endpoint为true,该值包含于数列中, num=50要生成的等步长的样本数量,默认为50, endpoint=True该值为 true 时,数列中包含stop值,反之不包含,默认是True。, retstep=False如果为 True 时,生成的数组中会显示间距,反之不显示。, dtype=None)ndarray 的数据类型设置起始点为 1 ,终止点为 10,数列个数为 10。import numpy as npa = np.linspace(1,10,10)print(a)输出结果:[ 1.  2.  3.  4.  5.  6.  7.  8.  9. 10.]设置元素全部是1的等差数列import numpy as npa = np.linspace(1,1,10)print(a)输出结果 : [1. 1. 1. 1. 1. 1. 1. 1. 1. 1.]numpy的logspace函数numpy.logspace 函数用于创建一个于等比数列np.logspace(start, stop, num=50, endpoint=True, base=10.0, dtype=None)np.logspace(start序列的起始值为:base ** start, stop序列的终止值为:base ** stop。如果endpoint为true,该值包含于数列中,num=50要生成的等步长的样本数量,默认为50,endpoint=True该值为 true 时,数列中中包含stop值,反之不包含,默认是True。,base=10.0对数 log 的底数。,dtype=Nonendarray 的数据类型)import numpy as npa = a = np.logspace(0,9,10,base=2)print (a)输出结果:[  1.   2.   4.   8.  16.  32.  64. 128. 256. 512.]
  • [问题求助] 【A800-9000产品】【CANN功能】安装numpy依赖出现问题
    【功能模块】pip3.7.5 install numpy==1.17.2【操作步骤&问题现象】pip3.7.5 install numpy==1.17.2安装时出现问题环境centos7.6 arm架构,参考文档(https://support.huawei.com/enterprise/zh/doc/EDOC1100180788/1f494259)nnumpy和scipy安装有问题
  • [问题求助] 【200DK产品】【TBE功能】跑ADD 的UT测试,报numpy错误
    【功能模块】【操作步骤&问题现象】1、Mindstudio 2.3.3自带的 custom 工程,运行里面的tbe2、测试add算子的UT3、 Run Unittests in add,报错我的环境变量:export install_path=$HOME/Ascend/ascend-toolkit/20.0.RC1/x86_64-linux_gcc7.3.0export PATH=/usr/local/python3.7.5/bin:${install_path}/atc/ccec_compiler/bin:${install_path}/atc/bin:$PATHexport PYTHONPATH=${install_path}/atc/python/site-packages/te:${install_path}/atc/python/site-packages/topi:$PYTHONPATHexport LD_LIBRARY_PATH=${install_path}/atc/lib64:$LD_LIBRARY_PATHexport ASCEND_OPP_PATH=${install_path}/oppexport DDK_PATH=$HOME/Ascend/ascend-toolkit/latest/arm64-linux_gcc7.3.0export NPU_HOST_LIB=$HOME/Ascend/ascend-toolkit/latest/arm64-linux_gcc7.3.0/acllib/lib64/stub我看了我的Ubuntu环境,Python安装的是3.7.5, 默认,我也用pip3安装了numpy因此,我添加了系统的环境变量:export PYTHONPATH=${install_path}/atc/python/site-packages/te:${install_path}/atc/python/site-packages/topi:/usr/local/python3.7.5/lib/python3.7/site-packages:$PYTHONPATH不过还是不行【截图信息】【日志信息】(可选,上传日志内容或者附件)Testing started at 上午11:31 .../home/gongjia/AscendProjects/demo_projects/custom/venv/bin/python /home/gongjia/MindStudio-ubuntu/plugins/python-ce/helpers/pycharm/_jb_unittest_runner.py --path /home/gongjia/AscendProjects/demo_projects/custom/tbe/testcases/ut/addLaunching unittests with arguments python -m unittest discover -s /home/gongjia/AscendProjects/demo_projects/custom/tbe/testcases/ut/add -t /home/gongjia/AscendProjects/demo_projects/custom/tbe/testcases/ut/add in /home/gongjia/AscendProjects/demo_projects/custom/tbe/testcases/ut/addRan 1 test in 0.015sFAILED (errors=1)ErrorTraceback (most recent call last):  File "/usr/lib/python3.7/unittest/case.py", line 59, in testPartExecutor    yield  File "/usr/lib/python3.7/unittest/case.py", line 628, in run    testMethod()  File "/usr/lib/python3.7/unittest/loader.py", line 34, in testFailure    raise self._exceptionImportError: Failed to import test module: test_addTraceback (most recent call last):  File "/usr/lib/python3.7/unittest/loader.py", line 436, in _find_test_path    module = self._get_module_from_name(name)  File "/usr/lib/python3.7/unittest/loader.py", line 377, in _get_module_from_name    __import__(name)  File "/home/gongjia/AscendProjects/demo_projects/custom/tbe/testcases/ut/add/test_add.py", line 20, in    from impl.add import add as add  File "/home/gongjia/AscendProjects/demo_projects/custom/tbe/impl/add.py", line 20, in    import te.lang.cce  File "/home/gongjia/Ascend/ascend-toolkit/20.0.RC1/atc/python/site-packages/te/te/__init__.py", line 47, in    import tvm  File "/home/gongjia/Ascend/ascend-toolkit/20.0.RC1/x86_64-linux_gcc7.3.0/atc/python/site-packages/te/te/tvm/__init__.py", line 27, in    from . import tensor  File "/home/gongjia/Ascend/ascend-toolkit/20.0.RC1/x86_64-linux_gcc7.3.0/atc/python/site-packages/te/te/tvm/tensor.py", line 20, in    from ._ffi.node import NodeBase, NodeGeneric, register_node, convert_to_node  File "/home/gongjia/Ascend/ascend-toolkit/20.0.RC1/x86_64-linux_gcc7.3.0/atc/python/site-packages/te/te/tvm/_ffi/node.py", line 24, in    from . import Object, register_, _set_class_node  File "/home/gongjia/Ascend/ascend-toolkit/20.0.RC1/x86_64-linux_gcc7.3.0/atc/python/site-packages/te/te/tvm/_ffi/.py", line 23, in    from .base import _FFI_MODE, _RUNTIME_ONLY, check_call, _LIB, c_str  File "/home/gongjia/Ascend/ascend-toolkit/20.0.RC1/x86_64-linux_gcc7.3.0/atc/python/site-packages/te/te/tvm/_ffi/base.py", line 25, in    import numpy as npModuleNotFoundError: No module named 'numpy'Process finished with exit code 1Assertion failedAssertion failedAssertion failedAssertion failed
  • [技术干货] SDC如何使用自己的算法,没有使用任何框架,只是用了opencv numpy库
    我使用的是传统的算法,没有使用caffe框架,没有使用深度学习,如何安装自己的算法呢 是不是直接通过Rusy studio直接转化呢求助
  • [技术干货] python利用numpy存取文件
    NumPy提供了多种存取数组内容的文件操作函数。保存数组数据的文件可以是二进制格式或者文本格式。二进制格式的文件又分为NumPy专用的格式化二进制类型和无格式类型。numpy格式的文件可以保存为后缀为(.npy/.npz)格式的文件tofile()和fromfile()tofile()将数组中的数据以二进制格式写进文件tofile()输出的数据不保存数组形状和元素类型等信息fromfile()函数读回数据时需要用户指定元素类型,并对数组的形状进行适当的修改import numpy as np   # 随机生成12个数字并将其有一维转换成3*4的矩阵形式 a = np.arange(12) print("一维数组:",a) a.shape = 3,4 print("3*4的矩阵:",a)   # 将数组中的数据以二进制格式写入到文件 a.tofile('a.bin') # fromfile在读取numpy文件时需要自己指定数据格式,并且原格式并为保存 b1 = np.fromfile('a.bin', dtype=np.float) # 按照float读取数据 b2 = np.fromfile('a.bin', dtype=np.int) # 按照int读取数据 b3 = np.fromfile('a.bin', dtype=np.int32) # 按照int32读取数据 print('float格式b1:{},\nint格式b2:{},\nint32格式b3:{}'.format(b1,b2,b3))   b3.shape = 3,4 print('b3:',b3)2. save() 和 load(),savez()NumPy专用的二进制格式保存数据,它们会自动处理元素类型和形状等信息如果想将多个数组保存到一个文件中,可以使用savez()savez()的第一个参数是文件名,其后的参数都是需要保存的数组,也可以使用关键字参数为数组起名非关键字参数传递的数组会自动起名为arr_0、arr_1、...。savez()输出的是一个扩展名为npz的压缩文件,其中每个文件都是一个save()保存的npy文件,文件名和数组名相同load()自动识别npz文件,并且返回一个类似于字典的对象,可以通过数组名作为键获取数组的内容import numpy as np   a = np.arange(12) a.shape = 3,4# 将数据存储为npy/npznp.save('a.npy', a) np.save('a.npz', a) c = np.load('a.npy')print('save-load:',c)  # 存储多个数组b1 = np.array([[6, 66, 666],[888, 88,8]]) b2 = np.arange(0, 1.0, 0.1) c2 = np.sin(b2) np.savez('result.npz', b1,b2,sin_arry = c) c3 = np.load('result.npz') # npz文件时一个压缩文件print(c3)print("数组b1:{}\n数组b2:{}\n数组sin_arry:{}".format(c3['arr_0'],c3['arr_1'],c3['sin_arry']))原文链接:https://blog.csdn.net/weixin_39121325/article/details/85781878
  • [API使用] 官方1.1.0-ubuntu-GPU镜像中mindspore.numpy.stack和mindspore.ops.Stack方法
    需要用ops.Pack来代替,但官方文档中Pack已经弃用
  • [数据处理] 【MindSpore产品】【FileWriter功能】FileWriter如何写入numpy.ndarray
    【操作步骤&问题现象】1、Ubuntu 18.04 + MindSpore-gpu 1.0.12、希望使用:mindspore.mindrecord.FileWriter 生成.mindrecord文件时写入numpy.ndarray数据3、查看源码发现,add_schema() 仅支持数据类型:mindspore.mindrecord.shardutils.VALID_ATTRIBUTES = ["int32", "int64", "float32", "float64", "string", "bytes"]4、要实现上述需求应该如何操作?
  • [数据处理] 【mindspore】【自定义数据集】TypeError: args should be NumPy ndarray.
    代码地址: https://gitee.com/leidaowaijiao/cycle-gan运行src/dataset.pygetitem函数返回四个值,datasetGenerator里定义的也是4个column。(在horse2zebra里的trainA和trainB各放一点图片,我这里传不上去)错误记录:[WARNING] ME(134108:138412,MainProcess):2021-03-01-15:32:02.911.533 [mindspore\ops\operations\array_ops.py:2302] WARN_DEPRECATED: The usage of Pack is deprecated. Please use Stack. [ERROR] ME(134108:138412,MainProcess):2021-03-01-15:32:03.283.508 [mindspore\dataset\engine\iterators.py:172] Got runtime err: Thread ID 2 Exception thrown from PyFunc. TypeError: args should be NumPy ndarray. Got <class 'tuple'>. At:   D:\anaconda3\lib\site-packages\mindspore\dataset\transforms\py_transforms_util.py(53): compose   D:\anaconda3\lib\site-packages\mindspore\dataset\transforms\py_transforms.py(135): __call__   D:\anaconda3\lib\site-packages\mindspore\dataset\transforms\validators.py(259): new_method   D:/cyclegan/src/dataset.py(63): __getitem__   D:\anaconda3\lib\site-packages\mindspore\dataset\engine\datasets.py(3418): _cpp_sampler_fn Line of code : 213 File         : D:\jenkins\agent-working-dir\workspace\Compile_CPU_Windows\mindspore\mindspore\ccsrc\minddata\dataset\engine\datasetops\source\generator_op.cc . Traceback (most recent call last):   File "D:/cyclegan/src/dataset.py", line 84, in <module>     for data in dataset.create_dict_iterator():   File "D:\anaconda3\lib\site-packages\mindspore\dataset\engine\iterators.py", line 125, in __next__     data = self._get_next()   File "D:\anaconda3\lib\site-packages\mindspore\dataset\engine\iterators.py", line 177, in _get_next     raise err   File "D:\anaconda3\lib\site-packages\mindspore\dataset\engine\iterators.py", line 169, in _get_next     return {k: self._transform_tensor(t) for k, t in self._iterator.GetNextAsMap().items()} RuntimeError: Thread ID 2 Exception thrown from PyFunc. TypeError: args should be NumPy ndarray. Got <class 'tuple'>. At:   D:\anaconda3\lib\site-packages\mindspore\dataset\transforms\py_transforms_util.py(53): compose   D:\anaconda3\lib\site-packages\mindspore\dataset\transforms\py_transforms.py(135): __call__   D:\anaconda3\lib\site-packages\mindspore\dataset\transforms\validators.py(259): new_method   D:/cyclegan/src/dataset.py(63): __getitem__   D:\anaconda3\lib\site-packages\mindspore\dataset\engine\datasets.py(3418): _cpp_sampler_fn Line of code : 213 File         : D:\jenkins\agent-working-dir\workspace\Compile_CPU_Windows\mindspore\mindspore\ccsrc\minddata\dataset\engine\datasetops\source\generator_op.cc
  • [问题求助] 在Atlas200DK上安装numpy出现问题
    【功能模块】【操作步骤&问题现象】1、2、【截图信息】【日志信息】(可选,上传日志内容或者附件)
  • [交流分享] 应用开发过程中numpy copy()的那些“坑”
    ####【问题描述】 在黑白图片上色python样例上进行修改,推理出的图片如下左图,右图为原图,可见推理结果图片只得到部分的图像。 ![1.png](https://bbs-img-cbc-cn.obs.cn-north-1.myhuaweicloud.com/data/attachment/forum/202101/08/174810h2vsjnmfbcn4xe7j.png) #### 【问题处理过程】 1、经初步排查代码问题后,暂未发现代码的错误,为了排除模型推理结果不正确的问题,这时我们通过使用msame工具进行辅助定位问题。具体步骤如下: - 使用img2bin工具( https://gitee.com/ascend/tools/tree/master/img2bin )生成模型推理所需的输入数据,以.bin格式保存。 - 使用msame工具( https://gitee.com/ascend/tools/tree/master/msame )加载上一步的bin文件为输入数据,进行推理并将推理结果以.bin格式保存。 - 使用以下命令加载推理结果进行后处理 ``` result = np.fromfile('xxx/20201225_181703_0/xingkong1_output_0.bin', dtype=np.float32) ``` 2、经过以上工具的实现,发现最后保存的结果是正确的。 3、这里我们可以再具体某一步来进行比较,即预处理保存为bin文件,推理结果保存为bin文件,后处理结果保存为bin文件,通过和msame工具的对应的三个文件进行比较,我们可以分析出问题出现的步骤。 ####【问题解决】 1、经过预处理的bin文件进行比对,发现了预处理这里出现了问题。这里要注意,img2bin工具的resize使用的是等比缩放 ``` def resize_img(args, input_img): old_size = input_img.shape[0:2] target_size = [args.height, args.width] ratio = min(float(target_size<i>)/(old_size<i>) for i in range(len(old_size))) new_size = tuple([int(i*ratio) for i in old_size]) img_new = cv.resize(input_img,(new_size[1], new_size[0])) pad_w = target_size[1] - new_size[1] pad_h = target_size[0] - new_size[0] top,bottom = pad_h//2, pad_h-(pad_h//2) left,right = pad_w//2, pad_w -(pad_w//2) resized_img = cv.copyMakeBorder(img_new, top, bottom, left, right, cv.BORDER_CONSTANT, None,(0, 0, 0)) #resized_img = cv.resize(input_img, (args.width, args.height)) return resized_img ``` 我们要改成一样的处理方式,这样比对才有意义。 2、排查预处理代码,发现代码中使用了transpose()函数,问题出在了这个函数上。使用transpose().copy()函数进行浅拷贝,解决了以上的问题。 ![2.png](https://bbs-img-cbc-cn.obs.cn-north-1.myhuaweicloud.com/data/attachment/forum/202101/08/174835lzbit7n2brdme1d8.png) **附录:“lazy”的 transpose() 转置** 参考文章:https://zhuanlan.zhihu.com/p/101864303 **numpy中的转置transpose()是非常“lazy”的,即不对内存中的数据进行重排,仅仅改变读取方式。** ``` a.shape = [1,2,3] transpose_scheme = [2,1,0] # 维度0与2交换位置 b = np.transpose(a, axes=transpose_scheme) # 此时 b.shape 虽然变成了 [3,2,1] # 但是 b 与 a 在内存的排布是一样的 ``` transpose()等效于:在读取/写入函数函数外,包了一个能改变维度顺序的函数装饰器。 之所以采用这种“lazy”的方式,是因为重新在内存中排列数据的非常耗时的。
  • [教程] ModelArts JupyterLab常见问题解决办法
    kernel Restarting:可能是因为内存占满而导致Kernel重启,可以尝试切换更高版本内存的硬件规格。如果切换到高硬件规格仍然出现该错误,请参考下一条问题的解决办法。报错内存已满或者“CUDA error: out of memory”:这类内存满了或显存满了的错误原因是正在运行中的案例脚本太多了,关掉一些正在运行的脚本即可释放内存或显存,操作方法如下:进入到如下页面,检查后台正在运行的脚本,点击SHUT DOWN关闭不需要运行的脚本kernel died:可以参考使用Jupyter Notebook为什么会kernel died?无法修改numpy版本:预置环境可能有多个numpy版本,需要卸载多次,直到将所有的numpy版本卸载干净才能安装新的numpy。卸载命令:pip uninstall numpy -y安装命令:pip install numpy==1.15.4训练时报错cuda已满:可以将batch_size调小一些。
总条数:107 到第
上滑加载中