substract元素到python中的行数组

时间:2017-03-15 16:12:23

标签: python numpy

我有两个numpy数组a和b

a=np.array([[1,2,3],[4,5,6],[7,8,9]])
array([[1, 2, 3],
       [4, 5, 6],
       [7, 8, 9]])

b = np.array([1,2,3])
array([1, 2, 3])

我想减去b的对应元素的每一行(即到a的第一行,b的第一行等) 所以c是

array([[0, 1, 2],
       [2, 3, 4],
       [4, 5, 6]])

是否有python命令来执行此操作?

3 个答案:

答案 0 :(得分:1)

  

是否有python命令来执行此操作?

是的,-运营商。

此外,您需要将b放入列向量中,以便广播可以为您完成剩下的工作:

a - b[:, np.newaxis]

# array([[0, 1, 2],
#        [2, 3, 4],
#        [4, 5, 6]])

答案 1 :(得分:0)

烨!你只需要先创建一个列向量

require 'uri'
require 'net/http'
require 'openssl'

url = URI("Service URL")

http = Net::HTTP::Proxy('127.0.0.1', '8888').new(url.host, url.port)
http.use_ssl = true
http.verify_mode = OpenSSL::SSL::VERIFY_NONE

request = Net::HTTP::Post.new(url)
request["content-type"] = 'text/xml'
request["charset"] = 'utf-8'
request["accept"] = 'text/xml'
request["host"] = 'abc.com'
request["HMACSignature"] = 'dsfsdfsdf'

response = http.request(request)
puts response.read_body

答案 2 :(得分:0)

b重塑为列向量,然后减去:

a - b.reshape(3, 1)

b未进行适当更改,但reshape方法调用的结果将是列向量:

array([[1],
       [2],
       [3]])

允许你想要的减法的“形状”。更普遍的重塑操作将是:

b.reshape(b.size, 1)

采用许多元素b,并将它们塑造成N x 1向量。

更新:快速基准测试显示kazemakase's answer,使用b[:, np.newaxis]作为重塑策略,速度提高约7%。对于小向量,μs的少量额外分数无关紧要。但对于大型载体或内环,更喜欢他的方法。这是一种不那么普遍的重塑,但更适合这种用途。