Julia REPL 告诉我输出
'c'+2
Run Code Online (Sandbox Code Playgroud)
'e': ASCII/Unicode U+0065 (category Ll: Letter, lowercase)
但输出是
'c'+2-'a'
Run Code Online (Sandbox Code Playgroud)
是4。
我同意字符通过 ASCII 代码识别为数字这一事实。但我对这里的类型推断感到困惑:为什么第一个输出是字符,第二个输出是整数?
让A,BBE ((day,observation,dim))阵列。在给定的一天中,每个数组包含相同数量的观测值,一个观测值是一个具有暗淡维度的点(即暗淡浮点数)。对于每一天,我想计算当天A和B当天所有观测值之间的空间距离。
例如:
import numpy as np
from scipy.spatial.distance import cdist
A, B = np.random.rand(50,1000,10), np.random.rand(50,1000,10)
output = []
for day in range(50):
output.append(cdist(A[day],B[day]))
Run Code Online (Sandbox Code Playgroud)
我用的地方scipy.spatial.distance.cdist。
有更快的方法吗?理想情况下,我想获得output一个((day,observation,observation)),每一天包含观测值之间的成对距离阵列A和B那一天,虽然在某种程度上避免了几天的循环。
我主要感兴趣的是((d1,d2))numpy数组(矩阵)但这个问题对于具有更多轴的数组是有意义的.我有函数f(i,j),我想通过这个函数的一些操作初始化一个数组
A=np.empty((d1,d2))
for i in range(d1):
for j in range(d2):
A[i,j]=f(i,j)
Run Code Online (Sandbox Code Playgroud)
这是可读的和有效的,但我想知道是否有更快的方法,因为我的阵列A将非常大,我必须优化这一点.
设A1和A2为相同形状的numpy数组,比如说((d1,d2)).我想从它构建((d1,d1))数组,以便通过将函数应用于元组A1 [i],A2 [j]来定义其第[i,j]个条目.我在表单中使用np.fromfunction
f=lambda i,j: np.inner(A1[i],A2[j])
A=np.fromfunction(f, shape=(d1, d1))
Run Code Online (Sandbox Code Playgroud)
(以最快的方式建议使用函数给出的值初始化numpy数组).
但是我收到错误''IndexError:用作索引的数组必须是整数(或布尔)类型''.这很奇怪,因为例如将lambda函数更改为
f=lambda i,j: i*j
Run Code Online (Sandbox Code Playgroud)
工作良好!似乎在lambda函数中调用另一个函数会导致麻烦
np.fromfunction
Run Code Online (Sandbox Code Playgroud)
(np.inner只是一个例子,我希望能够用其他类似的函数替换它).
给定(m,n)numpy数组A,我想构造(m-1,n-1)numpy数组B,使得B [i,j]等于
A[i+1,j+1]+A[i,j]-A[i+1,j]-A[i,j+1]
Run Code Online (Sandbox Code Playgroud) 我有两个numpy数组:
x of shape ((d1,...,d_m))
y of shape ((e_1,...e_n))
Run Code Online (Sandbox Code Playgroud)
我想形成外张量产品,即numpy数组
z of shape ((d1,...,d_m,e_1,...,e_n))
Run Code Online (Sandbox Code Playgroud)
这样的
z[i_1,...,i_n,i_{n+1}...,i_{m+n}] == x[i_1,...i_m]*y[i_{m+1},...,i_{m+n}]
Run Code Online (Sandbox Code Playgroud)
我必须多次执行上面的外部乘法,所以我想尽可能加快速度.