GVKun编程网logo

numpy 下的轴交换 transpose 和 swapaxes 的解读(什么是numpy中的轴)

1

如果您对numpy下的轴交换transpose和swapaxes的解读感兴趣,那么本文将是一篇不错的选择,我们将为您详在本文中,您将会了解到关于numpy下的轴交换transpose和swapaxes

如果您对numpy 下的轴交换 transpose 和 swapaxes 的解读感兴趣,那么本文将是一篇不错的选择,我们将为您详在本文中,您将会了解到关于numpy 下的轴交换 transpose 和 swapaxes 的解读的详细内容,我们还将为您解答什么是numpy中的轴的相关问题,并且为您提供关于867. Transpose Matrix - LeetCode、Anaconda Numpy 错误“Importing the Numpy C Extension Failed”是否有另一种解决方案、Excel转置 (Transpose)功能、Github docker 源码之代码文件 docker/image 的解读的有价值信息。

本文目录一览:

numpy 下的轴交换 transpose 和 swapaxes 的解读(什么是numpy中的轴)

numpy 下的轴交换 transpose 和 swapaxes 的解读(什么是numpy中的轴)

这里写图片描述 解读: transpose ( ) 方法的参数是一个 由 轴编号(轴编号自 0 开始) 序列构成的 元组。 开始时,数组的轴编号序列是默认从 0 开始的 :0,1,2,, 坐标的顺序也是这个轴编号的顺序,(0,1,2) 当使用 transpose 时候,轴编号的顺序变成了 (1,0,2) 说明 0 号轴和 1 号轴的顺序变了, 那么,坐标的顺序也应该变了, 例如 元素 8: 开始时:根据轴顺序 0,1,2。他的坐标是 (1,0,0) 现在,根据周顺序 1,0,2;他的坐标是(0,1,0). 这里写图片描述 swapaxes()就更简单了。 参数是交换的两个轴号(自 0 开始)

867. Transpose Matrix - LeetCode

867. Transpose Matrix - LeetCode

Question

867. Transpose Matrix

Solution

题目大意:矩阵的转置

思路:定义一个转置后的二维数组,遍历原数组,在赋值时行号列号互换即可

Java实现:

public int[][] transpose(int[][] A) {
    int[][] B = new int[A[0].length][A.length];
    for (int i = 0; i < A.length; i++) {
        for (int j = 0; j < A[0].length; j++) {
            B[j][i] = A[i][j];
        }
    }
    return B;
}

Anaconda Numpy 错误“Importing the Numpy C Extension Failed”是否有另一种解决方案

Anaconda Numpy 错误“Importing the Numpy C Extension Failed”是否有另一种解决方案

如何解决Anaconda Numpy 错误“Importing the Numpy C Extension Failed”是否有另一种解决方案?

希望有人能在这里提供帮助。我一直在绕圈子一段时间。我只是想设置一个 python 脚本,它将一些 json 数据从 REST API 加载到云数据库中。我在 Anaconda 上设置了一个虚拟环境(因为 GCP 库推荐这样做),安装了依赖项,现在我只是尝试导入库并向端点发送请求。 我使用 Conda(和 conda-forge)来设置环境并安装依赖项,所以希望一切都干净。我正在使用带有 Python 扩展的 VS 编辑器作为编辑器。 每当我尝试运行脚本时,我都会收到以下消息。我已经尝试了其他人在 Google/StackOverflow 上找到的所有解决方案,但没有一个有效。我通常使用 IDLE 或 Jupyter 进行脚本编写,没有任何问题,但我对 Anaconda、VS 或环境变量(似乎是相关的)没有太多经验。 在此先感谢您的帮助!

  \Traceback (most recent call last):
File "C:\Conda\envs\gcp\lib\site-packages\numpy\core\__init__.py",line 22,in <module>
from . import multiarray
File "C:\Conda\envs\gcp\lib\site-packages\numpy\core\multiarray.py",line 12,in <module>
from . import overrides
File "C:\Conda\envs\gcp\lib\site-packages\numpy\core\overrides.py",line 7,in <module>
from numpy.core._multiarray_umath import (
ImportError: DLL load Failed while importing _multiarray_umath: The specified module Could not be found.

During handling of the above exception,another exception occurred:

Traceback (most recent call last):
File "c:\API\citi-bike.py",line 4,in <module>
import numpy as np
File "C:\Conda\envs\gcp\lib\site-packages\numpy\__init__.py",line 150,in <module>
from . import core
File "C:\Conda\envs\gcp\lib\site-packages\numpy\core\__init__.py",line 48,in <module>
raise ImportError(msg)
ImportError:

IMPORTANT: PLEASE READ THIS FOR ADVICE ON HOW TO SOLVE THIS ISSUE!

Importing the numpy C-extensions Failed. This error can happen for
many reasons,often due to issues with your setup or how NumPy was
installed.

We have compiled some common reasons and troubleshooting tips at:

https://numpy.org/devdocs/user/troubleshooting-importerror.html

Please note and check the following:

* The Python version is: python3.9 from "C:\Conda\envs\gcp\python.exe"
* The NumPy version is: "1.21.1"

and make sure that they are the versions you expect.
Please carefully study the documentation linked above for further help.

Original error was: DLL load Failed while importing _multiarray_umath: The specified module Could not be found.

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

Excel转置 (Transpose)功能

Excel转置 (Transpose)功能

将数据从行转置到列,或将数据从列转置到行

适用于: Excel 2016 Excel 2013 Excel 2010 Excel 2007

 

如果想要旋转工作表中按列排列的数据,使其按行重新排列,则可以使用“转置”功能。它使你能够快速将数据从列旋转为行,反之亦然。

例如,如果您的数据的外观如下所示的顶部和沿左侧列出季度并列出销售地区:

列中的区域数据

您可以旋转到的顶部和地区显示季度的列和行一起的一侧,例如:

行中的区域数据

方法如下:

  1. 选择要重新排列的数据,包括所有行或列标签,然后按 Ctrl+C。

    注意: 确保您复制的数据执行此操作。 使用 "剪切 "命令或按 Ctrl + X 将不起作用。

  2. 右键单击要在其中粘贴数据的第一个单元格,并选择“转置转置按钮图像

    具有足够的空间以粘贴数据的工作表中选择一个位置。 您复制的数据将覆盖已存在的任何数据。

    “粘贴选项”菜单

  3. 旋转成功的数据之后,您可以 删除 原始数据。

Github docker 源码之代码文件 docker/image 的解读

Github docker 源码之代码文件 docker/image 的解读

package image 中,Graph 负责镜像的存储,其结构定义如下:

type Graph interface {
    Get(id string) (*Image, error)
    ImageRoot(id stringstring
    Driver() graphdriver.Driver
}

Get () 方法根据 Image ID 返回 Image 实例。

ImageRoot () 根据 Image ID 返回 Image 的根目录。

Driver () 返回镜像的存储驱动实例


const MaxImageDepth = 127

MaxImageDepth 代表镜像的深度,默认为 127.


Image 结构如下所示:

type Image struct {
    ID              string            `json:"id"`
    Parent          string            `json:"parent,omitempty"`
    Comment         string            `json:"comment,omitempty"`
    Created         time.Time         `json:"created"`
    Container       string            `json:"container,omitempty"`
    ContainerConfig runconfig.Config  `json:"container_config,omitempty"`
    DockerVersion   string            `json:"docker_version,omitempty"`
    Author          string            `json:"author,omitempty"`
    Config          *runconfig.Config `json:"config,omitempty"`
    Architecture    string            `json:"architecture,omitempty"`
    OS              string            `json:"os,omitempty"`
    Size            int64
    
    graph Graph
}

Image 的 graph 属性是为了表明该 Image 实例是否已经注册。


下面是 Image 的几个方法:

func (img *Image) CheckDepth() error {
    // We add 2 layers to the depth because the container''s rw and
    // init layer add to the restriction
    depth, err := img.Depth()
    if err != nil {
        return err
    }
    if depth+2 >= MaxImageDepth {
        return fmt.Errorf("Cannot create container with more than %d parents", MaxImageDepth)
    }
    return nil
}

上面函数的意思是 在使用指定镜像创建 Container 的时候,镜像的 depth 不能超过默认的深度 127,主要是为了性能方面的考虑。

// Build an Image object from raw json data
func NewImgJSON(src []byte) (*Image, error) {
    ret := &Image{}
    
    log.Debugf("Json string: {%s}", src)
    if err := json.Unmarshal(src, ret); err != nil {
        return nil, err
    }
    return ret, nil
}

上面函数的意思是 从 JSON 数据创建 Image 实例。

func (img *Image) History() ([]*Image, error) {
    var parents []*Image
    if err := img.WalkHistory(
        func(img *Image) error {
            parents = append(parents, img)
            return nil
        },
    ); err != nil {
        return nil, err
    }
    return parents, nil
}

上面函数的意思是   获取该镜像的所有的父镜像,其内部是采用递归函数实现的。

func LoadImage(root string) (*Image, error) {
    // Load the json data
    jsonData, err := ioutil.ReadFile(jsonPath(root))
    if err != nil {
        return nil, err
    }
    img := &Image{}
    
    if err := json.Unmarshal(jsonData, img); err != nil {
        return nil, err
    }
    if err := utils.ValidateID(img.ID); err != nil {
        return nil, err
    }
    
    if buf, err := ioutil.ReadFile(path.Join(root, "layersize")); err != nil {
        if !os.IsNotExist(err) {
            return nil, err
        }
        // If the layersize file does not exist then set the size to a negative number
        // because a layer size of 0 (zero) is valid
        img.Size = -1
    } else {
        size, err := strconv.Atoi(string(buf))
        if err != nil {
            return nil, err
        }
        img.Size = int64(size)
    return img, nil
}

上面函数的意思是 首先从 root+"json" 文件里加载 json 数据,通过该 json 数据实例化一个 image 实例,并且验证该镜像的 ID 的有效性,然后从 root+"layersize" 中读取该 image 的 size,如果不存在该文件,则将该镜像的 size 设置为 - 1.

func StoreImage(img *Image, jsonData []byte, layerData archive.ArchiveReader, root, layer string) error {
    // Store the layer
    var (
        size   int64
        err    error
        driver = img.graph.Driver()
    )
    if err := os.MkdirAll(layer, 0755); err != nil 
        return err
    }
    
    // If layerData is not nil, unpack it into the new layer
    if layerData != nil {
        if differ, ok := driver.(graphdriver.Differ); ok {
            if err := differ.ApplyDiff(img.ID, layerData); err != nil {
                return err
            }
            
            if size, err = differ.DiffSize(img.ID); err != nil {
                return err
            }
        } else {
            start := time.Now().UTC()
            log.Debugf("Start untar layer")
            if err := archive.ApplyLayer(layer, layerData); err != nil {
                return err
            }
            log.Debugf("Untar time: %vs", time.Now().UTC().Sub(start).Seconds())
            
            if img.Parent == "" {
                if size, err = utils.TreeSize(layer); err != nil {
                    return err
                }
            } else {
                parent, err := driver.Get(img.Parent, "")
                if err != nil {
                    return err
                }
                defer driver.Put(img.Parent)
                changes, err := archive.ChangesDirs(layer, parent)
                if err != nil {
                    return err
                }
                size = archive.ChangesSize(layer, changes)
            }
         }
    }
    img.Size = size
    if err := img.SaveSize(root); err != nil {
        return err
    }
    
    // If raw json is provided, then use it
    if jsonData != nil {
        if err := ioutil.WriteFile(jsonPath(root), jsonData, 0600); err != nil {
            return err
        }
    } else {
        if jsonData, err = json.Marshal(img); err != nil {
            return err
        }
        if err := ioutil.WriteFile(jsonPath(root), jsonData, 0600); err != nil {
            return err
        }
    }
    return nil
}

上面函数的意思是:输入参数分别为 所要存储的镜像实例,json 数据,镜像的 layer 数据、root 和 layer

如果 layerData 不为空,则获取 differ 实例

differ, ok := driver.(graphdriver.Differ)

通过以下步骤

if err := differ.ApplyDiff(img.ID, layerData); err != nil {

layerData 数据存入到...aufs/diff/iamgeid

通过以下步骤

if size, err = differ.DiffSize(img.ID); err != nil {

获得 iamge content 对应的 size。

最后还需要将 json 数据写入到对应的文件中。jsonPath(root)


// TarLayer returns a tar archive of the image''s filesystem layer.
func (img *Image) TarLayer() (arch archive.Archive, err error) {
    if img.graph == nil {
        return nil, fmt.Errorf("Can''t load storage driver for unregistered image %s", img.ID)
    }
    driver := img.graph.Driver()
    if differ, ok := driver.(graphdriver.Differ); ok {
        return differ.Diff(img.ID)
    }
    
    imgFs, err := driver.Get(img.ID, "")
    if err != nil {
        return nil, err
    }
    
    defer func() {
        if err != nil {
            driver.Put(img.ID)
        }
    }()
    
    
    if img.Parent == "" {
        archive, err := archive.Tar(imgFs, archive.Uncompressed)
        if err != nil {
            return nil, err
        }
        return utils.NewReadCloserWrapper(archive, func() error {
            err := archive.Close()
            driver.Put(img.ID)
            return err
        }), nil
    }
    
    
    parentFs, err := driver.Get(img.Parent, "")
    if err != nil {
        return nil, err
    }
    defer driver.Put(img.Parent)
    changes, err := archive.ChangesDirs(imgFs, parentFs)
    if err != nil {
        return nil, err
    }
    archive, err := archive.ExportChanges(imgFs, changes)
    if err != nil {
        return nil, err
    }
    return utils.NewReadCloserWrapper(archive, func() error {
        err := archive.Close()
        driver.Put(img.ID)
        return err
    }), nil
}

以上函数的作用是:returns a tar archive of the image''s filesystem layer.

首先通过

if differ, ok := driver.(graphdriver.Differ); ok {

    return differ.Diff(img.ID)

}

若以上函数没有错误,则直接将镜像的内容进行 tar 后返回。

否则继续执行:

imgFs, err := driver.Get(img.ID, "")

获得该镜像的文件系统路径。


如果该镜像没有父镜像,执行

archive, err := archive.Tar(imgFs, archive.Uncompressed)


否则需要改镜像的文件系统内容和相对于父镜像的文件系统内容的改变一起打包。

parentFs, err := driver.Get(img.Parent, "")

changes, err := archive.ChangesDirs(imgFs, parentFs)

archive, err := archive.ExportChanges(imgFs, changes)

今天关于numpy 下的轴交换 transpose 和 swapaxes 的解读什么是numpy中的轴的介绍到此结束,谢谢您的阅读,有关867. Transpose Matrix - LeetCode、Anaconda Numpy 错误“Importing the Numpy C Extension Failed”是否有另一种解决方案、Excel转置 (Transpose)功能、Github docker 源码之代码文件 docker/image 的解读等更多相关知识的信息可以在本站进行查询。

本文标签: