在python中,numpy中的where
根据给定条件选择数组中的元素。
>>> a = np.arange(10)
>>> a
array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
>>> np.where(a < 5, a, 10*a)
array([ 0, 1, 2, 3, 4, 50, 60, 70, 80, 90])
朱莉娅呢? filter
将用作选择元素,但是如果不使用if
表达式,它将删除其他元素。但是,我不想使用if
。
我是否需要为filter
(没有if
)或任何其他替代方法编写更复杂的功能?
编辑:我找到了解决方案,但是如果有人对此有更好的主意,请回答此问题。
julia > a = collect(1:10)
10-element Array{Int64,1}:
1
2
3
4
5
6
7
8
9
10
julia> cond = a .< 5
10-element BitArray{1}:
true
true
true
true
false
false
false
false
false
false
julia> Int.(cond) .* a + Int.(.!cond) .* (10 .* a)
10-element Array{Int64,1}:
1
2
3
4
50
60
70
80
90
100
答案 0 :(得分:5)
有几种方法,最明显的是像这样广播julia> a = 0:9 # don't use collect
0:9
julia> ifelse.(a .< 5, a, 10 .* a)
10-element Array{Int64,1}:
0
1
2
3
4
50
60
70
80
90
:
@.
您还可以使用@. ifelse(a < 5, a, 10a)
宏来确保正确地找到点:
[ifelse(x<5, x, 10x) for x in a]
或使用理解力
func addBannerViewToView() {
bannerView = GADBannerView(adSize: kGADAdSizeBanner)
bannerView.adUnitID = "ca-app-pub-HIDDEN/HIDDEN"
bannerView.rootViewController = self
bannerView.delegate = self
bannerView.translatesAutoresizingMaskIntoConstraints = false
view.addSubview(bannerView)
view.addConstraints(
[NSLayoutConstraint(item: bannerView,
attribute: .bottom,
relatedBy: .equal,
toItem: view.safeAreaLayoutGuide.bottomAnchor,
attribute: .top,
multiplier: 1,
constant: 0),
NSLayoutConstraint(item: bannerView,
attribute: .centerX,
relatedBy: .equal,
toItem: view,
attribute: .centerX,
multiplier: 1,
constant: 0)
])
bannerView.load(GADRequest())
}
您当然也可以使用循环。