我按照朱莉娅的文件:
julia> :(a in (1,2,3))
:($(Expr(:in, :a, :((1,2,3)))))
Run Code Online (Sandbox Code Playgroud)
那么:(a in (1,2,3))==:($(Expr(:in, :a, :((1,2,3))))),为什么朱莉娅以这种方式表达这个表达?究竟是$什么意思?在我看来,$只是评估全局范围中的下一个表达式.我发现文档对此不清楚.
我正在写一个耗时的程序.为了减少时间,我尽力使用numpy.dot而不是for循环.
但是,我发现矢量化程序的性能比for循环版本差得多:
import numpy as np
import datetime
kpt_list = np.zeros((10000,20),dtype='float')
rpt_list = np.zeros((1000,20),dtype='float')
h_r = np.zeros((20,20,1000),dtype='complex')
r_ndegen = np.zeros(1000,dtype='float')
r_ndegen.fill(1)
# setup completed
# this is a the vectorized version
r_ndegen_tile = np.tile(r_ndegen.reshape(1000, 1), 10000)
start = datetime.datetime.now()
phase = np.exp(1j * np.dot(rpt_list, kpt_list.T))/r_ndegen_tile
kpt_data_1 = h_r.dot(phase)
end = datetime.datetime.now()
print((end-start).total_seconds())
# the result is 19.302483
# this is the for loop version
kpt_data_2 = np.zeros((20, 20, 10000), dtype='complex')
start = datetime.datetime.now()
for i in …Run Code Online (Sandbox Code Playgroud) 我想在朱莉娅列出一份清单.它应该是这样的:
a = [1,"char", [1, 2, 3]]
a[3]
# ouput should be [1,2,3]
Run Code Online (Sandbox Code Playgroud)
但是,朱莉娅会自动进行连接,所以它最终会被连接起来 [1, "char", 1, 2, 3]
如何在julia中执行此类操作而不使用其他值启动列表,然后为其分配列表,如:
a = [1, "char", 3]
a[3] = [1, 2, 3]
Run Code Online (Sandbox Code Playgroud) 我用f2py包装了一些fortran代码.这是fortran代码:
MODULE iteration
implicit none
contains
SUBROUTINE iterate(alpha, beta, e, es, rank, omega, smearing, prec, max_step)
REAL(kind=8), INTENT(in) :: omega, smearing, prec
INTEGER :: max_step, step, rank, cnt
COMPLEX(kind=16) :: alpha(rank,rank), beta(rank,rank), omega_mat(rank, rank), green(rank, rank)
COMPLEX(kind=16), INTENT(inout) :: e(rank,rank), es(rank,rank)
step = 0
omega_mat = 0
DO cnt=1, rank
omega_mat(cnt, cnt) = 1.0
ENDDO
omega_mat = omega_mat * (omega + (0.0, 1.0) * smearing)
DO WHILE (minval(abs(alpha)) .gt. prec .or. minval(abs(beta)) .gt. prec .and. step .lt. max_step)
green = …Run Code Online (Sandbox Code Playgroud)