我有两个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命令来执行此操作?
答案 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的少量额外分数无关紧要。但对于大型载体或内环,更喜欢他的方法。这是一种不那么普遍的重塑,但更适合这种用途。