问题更侧重于计算的表现.
我有2个矢量矩阵.这意味着它们具有X,Y,Z的3个深度尺寸.矩阵的每个元素必须与另一个矩阵的相同位置上的元素制作点积.
一个简单而无效的代码就是这个:
import numpy as np
a = np.random.uniform(low=-1.0, high=1.0, size=(1000,1000,3))
b = np.random.uniform(low=-1.0, high=1.0, size=(1000,1000,3))
c = np.zeros((1000,1000))
numRow,numCol,numDepth = np.shape(a)
for idRow in range(numRow):
for idCol in range(numCol):
# Angle in radians
c[idRow,idCol] = math.acos(a[idRow,idCol,0]*b[idRow,idCol,0] + a[idRow,idCol,1]*b[idRow,idCol,1] + a[idRow,idCol,2]*b[idRow,idCol,2])
Run Code Online (Sandbox Code Playgroud)
但是,numpy函数可以加快计算速度,使代码更快:
# Angle in radians
d = np.arccos(np.multiply(a[:,:,0],b[:,:,0]) + np.multiply(a[:,:,1],b[:,:,1]) + np.multiply(a[:,:,2],b[:,:,2]))
Run Code Online (Sandbox Code Playgroud)
但是,我想知道是否还有其他的sintaxis可以通过其他函数,索引来改进上面的这个...
首先代码需要4.658s,而第二个需要0.354s
我有一个 XML,每个标签的属性如下:
<?xml version= "1.0" encoding="ISO-8859-1" ?>
<month xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="my.xsd">
<day Day="2016-1-01">
<hour Hour="00:00">
<Variables>
<a>211.3</a>
<b>78.94</b>
<c>0.6</c>
</Variables>
</hour>
<hour Hour="12:00">
<Variables>
<a>155.5</a>
<b>85.5</b>
<c>0.42</c>
</Variables>
</hour>
</day>
</month>
Run Code Online (Sandbox Code Playgroud)
我希望解析 XML 并转换为字典,但不使用标签和属性值。
我的意思是,如何能够制作类似于:
>>> print d['2016-1-01']['12:00']['b']
>>> 85.5
Run Code Online (Sandbox Code Playgroud)
真正的 XML 有更多的天数和数小时。这可能吗?
我能够解析它的唯一方法是这个,但是如果您想在不同时间查找几个不同的变量,则很困难:
# Day
for child_day in root:
print child_day.tag, child_day.attrib
# Hour
for child_hour in child_day:
print '\t', child_hour.tag, child_hour.attrib
# Variables
for child_Variables in child_hour:
print '\t\t', child_Variables.find('b').text
Run Code Online (Sandbox Code Playgroud)
是否有任何类似于此答案的功能使属性案例与此相同而不是标签相同?