Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/299.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 是否执行列号为操作数之一的操作?_Python_Numpy - Fatal编程技术网

Python 是否执行列号为操作数之一的操作?

Python 是否执行列号为操作数之一的操作?,python,numpy,Python,Numpy,假设我有(5,5)个数组。 如何使列号为操作数之一f.e.如果数组均为0,则如果我这样做: a + Col-num? 然后结果的第一列将是全部1,第二列全部2,…3,4,全部5 那么第二个重影操作数就是列号?你是说这个 arr = [[0,0,0,0,0],[0,0,0,0,0],[0,0,0,0,0],[0,0,0,0,0],[0,0,0,0,0]] columnAdded = [[x+i for i,x in enumerate(row)] for row in arr] 或者使用nu

假设我有(5,5)个数组。 如何使列号为操作数之一f.e.如果数组均为0,则如果我这样做:

 a + Col-num?
然后结果的第一列将是全部1,第二列全部2,…3,4,全部5

那么第二个重影操作数就是列号?

你是说这个

arr = [[0,0,0,0,0],[0,0,0,0,0],[0,0,0,0,0],[0,0,0,0,0],[0,0,0,0,0]]
columnAdded = [[x+i for i,x in enumerate(row)] for row in arr]
或者使用numpy:

import numpy as np 
arr = np.array([[0,0,0,0,0],[0,0,0,0,0],[0,0,0,0,0],[0,0,0,0,0],[0,0,0,0,0]])
print(arr+np.arange(1,1+len(arr[0])))
你是说这个

arr = [[0,0,0,0,0],[0,0,0,0,0],[0,0,0,0,0],[0,0,0,0,0],[0,0,0,0,0]]
columnAdded = [[x+i for i,x in enumerate(row)] for row in arr]
或者使用numpy:

import numpy as np 
arr = np.array([[0,0,0,0,0],[0,0,0,0,0],[0,0,0,0,0],[0,0,0,0,0],[0,0,0,0,0]])
print(arr+np.arange(1,1+len(arr[0])))

我认为这比公布的答案要快一点:

def f(c):
    col, arr = c
    return arr + (col + 1)
a = np.zeros((5, 5))
columnAdded = np.apply_along_axis(f, 1, enumerate(a.T)).T
columnAdded
>>> array([[1., 2., 3., 4., 5.],
       [1., 2., 3., 4., 5.],
       [1., 2., 3., 4., 5.],
       [1., 2., 3., 4., 5.],
       [1., 2., 3., 4., 5.]])

按照要求以
numpy
的方式完成

我认为这将比发布的答案快一点:

def f(c):
    col, arr = c
    return arr + (col + 1)
a = np.zeros((5, 5))
columnAdded = np.apply_along_axis(f, 1, enumerate(a.T)).T
columnAdded
>>> array([[1., 2., 3., 4., 5.],
       [1., 2., 3., 4., 5.],
       [1., 2., 3., 4., 5.],
       [1., 2., 3., 4., 5.],
       [1., 2., 3., 4., 5.]])
a+(np.arange(a.shape[1])+1)
按要求以
numpy
方式完成

a+(np.arange(a.shape[1])+1)
输出:

a = np.zeros((4,4))
a+(np.arange(a.shape[1])+1)
array([[1., 2., 3., 4.],
       [1., 2., 3., 4.],
       [1., 2., 3., 4.],
       [1., 2., 3., 4.]])
输出:

a = np.zeros((4,4))
a+(np.arange(a.shape[1])+1)
array([[1., 2., 3., 4.],
       [1., 2., 3., 4.],
       [1., 2., 3., 4.],
       [1., 2., 3., 4.]])

你可以转置和枚举你可以转置和枚举是的,但是用一种简单的方式;)给你!:)是的,但以一种朴素的方式;)给你!:)<代码>沿应用不是速度工具。你可以自己测试。
apply_-along
不是一个快速工具。你可以自己测试一下。